![](/img/trans.png)
[英]Remove an array from an Array if a certain value exists in the array in javascript
[英]Remove arrays from an Array if a certain values exists within a list
在 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' ] ]
您可以在過濾器的回調中使用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
都被過濾,因此先前過濾的數組被重新分配。
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)
您每次都通過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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.