我在 FreeCodeCamp 中回答這個練習,這里的指令 Drop it 給定陣列 arr,迭代并洗掉從第一個元素(索引 0)開始的每個元素,直到函式 func 在迭代元素通過它時回傳 true。
一旦滿足條件,則回傳陣列的其余部分,否則, arr 應作為空陣列回傳。
這就是我到目前為止所擁有的。我使用 map 函式迭代陣列的索引,然后檢查它是否滿足 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; }));
uj5u.com熱心網友回復:
您可以對布林值進行閉包,并true為陣列的其余部分保留一個值以進行過濾。
資料/結果來源:https ://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/drop-it
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]
uj5u.com熱心網友回復:
建議使用一個過濾器,它回傳另一個陣列:
function dropElements(arr) {
return arr.filter(x => x < 3);
}
const someArray = [1, 2, 3];
console.log(dropElements(someArray)); // [1, 2]
uj5u.com熱心網友回復:
它說“洗掉元素”,所以我要改變傳入的陣列。
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://www.uj5u.com/qukuanlian/447781.html
標籤:javascript 数组 字典
上一篇:如何一次添加多個嵌套字典?
下一篇:確定時間和空間復雜度
