【发布时间】:2021-07-09 14:06:45
【问题描述】:
我正在搞乱the MDN page detailing Array.prototype.filter() 上的示例代码,我发现一些有趣的事情正在发生。
我将示例代码修改如下:
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.includes('e', 'i'));
console.log(result);
// expected output: const result = words.filter(word => word.includes('e', 'i'));
console.log(结果); // 预期输出:Array ["elite", "exuberant", "destruction", "present"]
它可以工作,但是当我修改它时,这两个字符位于一个变量中(使用const 或var 声明)...
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
var test = ['e', 'i'];
const result = words.filter(word => word.includes(test));
console.log(result);
// expected output: Array ["elite", "exuberant", "destruction", "present"]
// ACTUAL OUTPUT: Array []
最后,如果我将 test 更改为 test[0,1],我会得到第一个结果 - 正如预期的那样。
其他类似的问题似乎对我没有帮助,而且我不太确定这里发生了什么,或者我如何才能完成这项工作。
【问题讨论】:
-
includes('e', 'i') 与 includes(['e', 'i']) 不同
-
将 .inculdes(test) 替换为 .includes(...test)。
-
真正的问题是你这里从来不匹配
i,所以没有变量的版本也是不正确的。
标签: javascript arrays filter