我在FreeCodeCamp中回答了这个练习--这里是给定数组arr的指令删除,迭代和删除每个元素,从第一个元素(0索引)开始,直到迭代元素通过它时函数func返回true为止。
然后在满足条件后返回数组的其余部分,否则,arr应作为空数组返回。
这就是我到目前为止所拥有的。我使用map函数迭代数组的索引,然后检查它是否满足映射中函数参数的条件。在这种情况下,函数应该只返回小于3的数字,但是在返回它时我不能去掉3。
function dropElements(arr, func) {
return arr.map(x => func(x) ? x : "");
}
console.log(dropElements([1, 2, 3], function(n) {return n < 3; }));发布于 2022-03-22 21:21:45
您可以对布尔值进行闭包,并为数组的其余部分保留一个true值以进行筛选。
function dropElements(arr, func) {
return arr.filter((b => v => b ||= func(v))(false));
}
console.log(...dropElements([1, 2, 3], function(n) { return n < 3; })); // [1, 2, 3]
console.log(...dropElements([1, 2, 3, 4], function(n) { return n >= 3; })); // [3, 4]
console.log(...dropElements([0, 1, 0, 1], function(n) { return n === 1; })); // [1, 0, 1]
console.log(...dropElements([1, 2, 3], function(n) { return n > 0; })); // [1, 2, 3]
console.log(...dropElements([1, 2, 3, 4], function(n) { return n > 5; })); // []
console.log(...dropElements([1, 2, 3, 7, 4], function(n) { return n > 3; })); // [7, 4]
console.log(...dropElements([1, 2, 3, 9, 2], function(n) { return n > 2; })); // [3, 9, 2]
发布于 2022-03-22 21:09:37
建议使用筛选器,它返回另一个数组:
function dropElements(arr) {
return arr.filter(x => x < 3);
}
const someArray = [1, 2, 3];
console.log(dropElements(someArray)); // [1, 2]
发布于 2022-03-22 21:14:40
它写着“删除元素”,所以我将对传入的数组进行变异。
function dropElements(arr, func) {
while (arr.length && !func(arr[0])) {
arr.splice(0, 1);
}
return arr;
}
console.log(dropElements([1, 2, 3], function(n) {return n < 3; }));
https://stackoverflow.com/questions/71578889
复制相似问题