簡體   English   中英

如果列表中存在特定值,則從數組中刪除 arrays

[英]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都被過濾,因此先前過濾的數組被重新分配。

使用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)

您每次都通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM