js移除陣列中元素-- 倒著遍歷陣列,繞過改變下標的問題
阿新 • • 發佈:2019-01-30
題目描述
移除陣列 arr 中的所有值與 item 相等的元素,直接在給定的 arr 陣列上進行操作,並將結果返回
示例1
輸入
[1, 2, 2, 3, 4, 2, 2], 2
輸出
[1, 3, 4]
我一開始還好死不死用的foreach,忽略了改變陣列之後,下標也改變的情況,正好被改的那個index上的元素就遍歷不到了。後來用for來控制index –,程式碼如下:
function removeWithoutCopy(arr, item) {
for(var i = 0; i < arr.length; i++){
if(arr[i] === item ){
arr.splice(i,1 )
i--
}
}
return arr
}
但後來看到一個更好的,不用動下標,直接倒著遍歷。
連結:https://www.nowcoder.com/questionTerminal/a93dd26ebb8c425d844acc17bcce9411
來源:牛客網
function removeWithoutCopy(arr, item) {
for(var i = arr.length-1;i >= 0;i--){
var value = arr[i];
if(value == item){
arr.splice(i,1 );
}
}
return arr;
}