在 JavaScript 中相當新,如果陣列中列出了某些值,只是試圖洗掉我的資料中的整個del_values陣列。
解決這個問題的最佳方法是什么?
data =
[['true', 'visiting-today', 'DVM-Wiessman','J-001'],
['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'],
['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'],
['false', 'visiting-tommorrow', 'DVM-Kon','J-001']]
var del_values = ['J-001','K-001'];
function remove_from_list(list,deleted_values) {
for( var i = 0; i < deleted_values.length; i ) {
result = list.filter(dat => !dat.includes(deleted_values[i]));
}
return result;
}
實際結果
data =
[ [ 'true', 'visiting-today', 'DVM-Wiessman', 'J-001' ],
[ 'true', 'visiting-tommorrow', 'DVM-Stevens', 'Z-001' ],
[ 'false', 'visiting-tommorrow', 'DVM-Kon', 'J-001' ] ]
Desired Result - 如果資料中包含任何列出的值,則洗掉資料中的整個陣列 del_values
data =
[[ 'true', 'visiting-tommorrow', 'DVM-Stevens', 'Z-001' ] ]
uj5u.com熱心網友回復:
您可以使用Array.prototype.every內部過濾器的回呼:
const data = [
['true', 'visiting-today', 'DVM-Wiessman', 'J-001'],
['false', 'visiting-tommorrow', 'DVM-Stevens', 'K-001'],
['true', 'visiting-tommorrow', 'DVM-Stevens', 'Z-001'],
['false', 'visiting-tommorrow', 'DVM-Kon', 'J-001']
]
const del_values = ['J-001', 'K-001'];
function remove_from_list(list, deleted_values) {
return list.filter(arr => arr.every(el => !deleted_values.includes(el)))
}
console.log(remove_from_list(data, del_values))
function remove_from_list(list,deleted_values) {
for( var i = 0; i < deleted_values.length; i ) {
result = list.filter(dat => !dat.includes(deleted_value[i]));
}
return result;
}
您的代碼中的主要問題是在每次迭代時list都被過濾,因此先前過濾的陣列被重新分配。
uj5u.com熱心網友回復:
使用Array.some()和Array.filter()
var data =
[['true', 'visiting-today', 'DVM-Wiessman','J-001'],
['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'],
['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'],
['false', 'visiting-tommorrow', 'DVM-Kon','J-001']]
var del_values = ['J-001','K-001'];
var result = data.filter(function(arr){
return !arr.some(function(e){return del_values.includes(e)});
})
console.log(result)
uj5u.com熱心網友回復:
您正在運行過濾器,list而不是result每次。
我認為您打算繼續處理過濾后的串列,而不是在每次迭代時重新開始討論:
data =
[['true', 'visiting-today', 'DVM-Wiessman','J-001'],
['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'],
['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'],
['false', 'visiting-tommorrow', 'DVM-Kon','J-001']]
var del_values = ['J-001','K-001'];
function remove_from_list(list,deleted_values) {
for( var i = 0; i < deleted_values.length; i ) {
list = list.filter(dat => !dat.includes(deleted_values[i]));
}
return list;
}
let e = remove_from_list(data,del_values);
console.log(e);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414918.html
標籤:
上一篇:根據自定義順序對字串陣列進行排序
