如何使用过滤器和映射从数组中删除字符?
how to remove character from array using filters and map?
我正在尝试从数组中删除特定字符。
我正在传递一个句子,应该使用 map() 和 filters() 从 alpha 数组中删除该句子中的字符,
var alpha =['b','c','d','e','f','g','h','a']
function removeAlpha(sentence){
return alpha.map(function(melem,mpos,marr){
return sentence.toLowerCase().split("").filter(function(elem,pos,arr){
melem!=elem
});
});
}
console.log(removeAlpha('bdog'));
请让我知道我做错了什么
你也可以使用String#replace by converting the array to a string and use the sentence as a RegExp character set:
var alpha =['b','c','d','e','f','g','h','a'];
function removeAlpha(sentence){
return alpha
.join('')
.replace(new RegExp('[' + sentence + ']', 'g'), '')
.split(''); // replace all characters with an empty string
}
console.log(removeAlpha("bdog"));
内部回调函数没有 return 值。 melem!=elem
应该是 return melem!=elem
在那次更正之后,内部 filter
returns 是一个数组,其中删除了一个字母,但只删除了那个字母。在外部 map
的下一次迭代中,您从头开始 return 一个仅删除第二个字母的数组,依此类推......这为您提供了一个数组数组,其中每个数组中有一个的字母字符被删除。
但是,您需要一些非常不同的东西:您需要 alpha 数组中不在句子中的字符(而不是句子中不在 alpha 数组中的字符)。
为此你应该在 alpha
上应用 filter
:
var alpha =['b','c','d','e','f','g','h','a']
function removeAlpha(sentence){
return alpha.filter(function(melem){
return !this.includes(melem);
}, sentence.toLowerCase());
}
console.log(removeAlpha('bdog'));
我正在尝试从数组中删除特定字符。 我正在传递一个句子,应该使用 map() 和 filters() 从 alpha 数组中删除该句子中的字符,
var alpha =['b','c','d','e','f','g','h','a']
function removeAlpha(sentence){
return alpha.map(function(melem,mpos,marr){
return sentence.toLowerCase().split("").filter(function(elem,pos,arr){
melem!=elem
});
});
}
console.log(removeAlpha('bdog'));
请让我知道我做错了什么
你也可以使用String#replace by converting the array to a string and use the sentence as a RegExp character set:
var alpha =['b','c','d','e','f','g','h','a'];
function removeAlpha(sentence){
return alpha
.join('')
.replace(new RegExp('[' + sentence + ']', 'g'), '')
.split(''); // replace all characters with an empty string
}
console.log(removeAlpha("bdog"));
内部回调函数没有 return 值。 melem!=elem
应该是 return melem!=elem
在那次更正之后,内部 filter
returns 是一个数组,其中删除了一个字母,但只删除了那个字母。在外部 map
的下一次迭代中,您从头开始 return 一个仅删除第二个字母的数组,依此类推......这为您提供了一个数组数组,其中每个数组中有一个的字母字符被删除。
但是,您需要一些非常不同的东西:您需要 alpha 数组中不在句子中的字符(而不是句子中不在 alpha 数组中的字符)。
为此你应该在 alpha
上应用 filter
:
var alpha =['b','c','d','e','f','g','h','a']
function removeAlpha(sentence){
return alpha.filter(function(melem){
return !this.includes(melem);
}, sentence.toLowerCase());
}
console.log(removeAlpha('bdog'));