2 回答
TA贡献1839条经验 获得超15个赞
我假设您想要一个方法,该方法接受给定的数组并删除与作为参数传递的数组的值相匹配的值。该演示将返回值与传入的数组的值不匹配的数组的索引。这可以通过最新的数组方法实现,该方法.flatMap()本质上是.map()与.flat()方法相结合的。映射部分将在每个值上运行一个函数,.map()但不同的是每个返回值都是一个数组:
array.map(function(x) { return x});
array.flatMap(function(x) { return [x]});
如果你想删除一个值,你会返回一个空数组:
array.map(function(x) { return x}).filter(function(x) { return x !== z});
array.flatMap(function(x) { return x !== z ? [x] : []});
通过使用三元控件,您可以直接删除值,而不是通过.filter().
if x does not equal z return [x] else return empty array []
return x !== z ? [x] : []
然后将结果展平为普通数组。
Array.prototype.exclude = function(array) {
return this.flatMap((value, index) => {
return array.includes(value) ? [] : [index];
})
}
let x = [1, 2, 3, 4, 5, 6, 7];
let z = x.exclude([3, 4]);
console.log(JSON.stringify(z));
TA贡献1796条经验 获得超10个赞
1) 你不想return elem
你想返回一个布尔值来指示是否elem
应该包含或不包含。
2)doNotInclude(3)
表示arr
可能不是数组。您必须检查Array.isArray(arr)
并相应地更改逻辑(arr
直接比较索引)。
添加回答
举报