提问人:nmA 提问时间:4/16/2020 最后编辑:nmA 更新时间:11/17/2023 访问量:95
JS 数组方法
JS array methods
问:
我有一个段落存储在一个名为 的变量中。story
story = story text;
(示例)。
项目的第一步是将 story 变量中的每个单词分开,并将其存储在名为 的数组中。storyWords
很简单,检查。
现在它希望我们遍历、过滤掉新数组并将其存储在一个名为 的变量中。storyWords
unnecessaryWords
betterWords
unnecessaryWords = ['extremely', 'literally', 'actually'];
这是我的代码:
const betterWords = storyWords.filter(word => {
if(word !== unnecessaryWords)
return word;
});
使我相信这应该起作用的是基于以下代码:
const betterWords = storyWords.filter(word => {
if(word !== 'extremely')
if(word !== 'literally')
if(word !== 'actually')
return word;
})
我在这里有什么不明白的?
答:
如果要排除该条目,只要它与任何不必要的单词匹配,即数组:
const unnecessaryWords = ['extremely', 'literally', 'actually'];
...那么你可以简单地返回 ,这意味着 “如果 不包含在数组中,我们要保留它”:!unnecessaryWords.includes(word)
word
unnecessaryWords
const betterWords = storyWords.filter(word => !unnecessaryWords.includes(word));
Array.prototype.includes
在与 中的任何数组成员匹配时将返回 true。word
unnecessaryWords
概念验证:
const unnecessaryWords = ['extremely', 'literally', 'actually'];
const storyWords = ['Lorem', 'ipsum', 'extremely', 'dolor', 'sit', 'actually', 'amet'];
const betterWords = storyWords.filter(word => !unnecessaryWords.includes(word));
console.log(betterWords);
评论
storyWords
['foo', 'bar', 'extremely']
betterWords
['foo', 'bar']
您可以尝试两种方法。使用一个 和 就像我在下面演示的那样。Array.forEach()
Array.filter()
// Just for Illustration, let's initialize a list representing storyWords
var storyWords = ['story','extremely', 'global','actually', 'javascript','c-sharp','literally'];
var unnecessaryWords = ['extremely', 'literally', 'actually'];
//First using simple loop
var betterWordsLooped = [];
storyWords.forEach((word)=>
{
if(!unnecessaryWords.includes(word))
{
betterWordsLooped.push(word);
}
});
console.log(betterWordsLooped);
//Secondly Using Filter
var betterWordsFiltered = storyWords.filter((word)=> !unnecessaryWords.includes(word));
console.log(betterWordsFiltered);
在此代码中:我们要检查变量的值是否与字符串数组中包含的任何项目匹配。请记住,使用的模式是 where 是 a 和 一个字符串变量,您希望在其中匹配其值。!unnecessaryWords.includes(word))
word
unnecessaryWords
Array.propotype.includes()
someArray.includes(someVar)
someArray
[]
someVar
someArray
评论
word.includes(!unnecessaryWords)
这是一个字符串,而不是一个列表。 是一个列表。您只能检查是否包含在其中word
unnecessaryWords
word
unnecessaryWords
下面使用正则表达式和 String#matchAll 来匹配单词边界后面的单词字符序列。然后使用 Array#filter 过滤掉不必要的单词。
const unnecessaryWords = ['extremely', 'literally', 'actually']
function betterWords(text) {
const words = [...text.matchAll(/\b\w+/gu)].flat()
return words.filter((w) => !unnecessaryWords.includes(w))
}
const text = 'literally the story text'
console.log(betterWords(text))
评论
unnecessaryWords = 'extremely', 'literally', 'actually';
这是你的实际代码吗?如果是这样,则您正在调用逗号运算符,并且只分配了逗号运算符,其他运算符将丢失actually
Array.prototype.filter()
Boolean
undefined