簡體   English   中英

如果對象與新數組不匹配,則從前一個數組中刪除對象

[英]Remove objects from previous array if they don't match the new one

我正在嘗試將前一個數組中不匹配的值刪除到新數組中的值。

var previous = [
    {m: "195/50 15"},
    {m: "195/50 16"},
    {m: "195/55 15"},
    {m: "195/55 16"},
    {m: "195/55 20"}
];
var newOne = [
    {m: "195/55 15"},
    {m: "195/55 16"},
    {m: "195/55 20"}
];

console.log( previous.filter((obj) => obj['m'] !== newOne['m']) );

如果新數組為空,則過濾器應返回一個空數組。

我上面嘗試的方法不起作用。

嘗試使用 some 來確定該值是否在另一個數組中:

 var previous = [ {m: "195/50 15"}, {m: "195/50 16"}, {m: "195/55 15"}, {m: "195/55 16"}, {m: "195/55 20"} ]; var newOne = [ {m: "195/55 15"}, {m: "195/55 16"}, {m: "195/55 20"} ]; const result = previous.filter(p => { return newOne.some(n => nm === pm); }) console.log(result);

對比應該是這樣的


var previous = [
    {m: "195/50 15"},
    {m: "195/50 16"},
    {m: "195/55 15"},
    {m: "195/55 16"},
    {m: "195/55 20"}
];
var newOne = [
    {m: "195/55 15"},
    {m: "195/55 16"},
    {m: "195/55 20"}
];

console.log( previous.filter((obj, i) => newOne[i] && obj['m'] !== newOne[i]['m']) );

在您的代碼中,您正在使用過濾器 function 運行前一個數組中的對象並將每個 object 值與返回undefined的 newOne['m'] 進行比較

    let newArray = []

    previous.forEach(pobj => {
      newOne.forEach(nobj => {
        if(pobj['m'] === nobj['m']){
          newArray.push(pobj)
        }
      })
    })

    console.log(newArray)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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