【问题标题】:how to check if object from current array exist in previous array [closed]如何检查当前数组中的对象是否存在于前一个数组中[关闭]
【发布时间】:2020-11-26 10:50:51
【问题描述】:

我有一个包含 x 对象数组的数组,我的目标是检查当前数组中的对象是否存在于前一个数组中,如果不存在(对象不存在于前一个数组中),我将在前一个数组中创建它。 主数组如下:

    [
    {
    alphabet: [
     {value: 1, name: "X" },
     {value: 4, name: "Y" },
     {value: 1, name: "Z"}
    ]
   },
 {
   alphabet: [
     {value: 1, name: "W" },
     {value: 4, name: "X" },
     {value: 1, name: "Y"}
    ]
}
    ]

检查的输出是这样的:

   [
{
    alphabet: [
     {value: 1, name: "X" },
     {value: 4, name: "Y" },
     {value: 1, name: "Z" },
     {value: 1, name: "W" }
    ]
},
   { alphabet: [
     {value: 1, name: "W" },
     {value: 4, name: "X" },
     {value: 1, name: "Y"}
    ]
    }
    ]

【问题讨论】:

  • 您的 javascript 无效。请修复它
  • 为什么{value: 1, name: "W" }会变成{value: 0, name: "W" }?
  • @JonasWilms 当我找到该对象并在前一个数组中创建它时,我将他的值更改为 0

标签: javascript arrays reactjs reduce


【解决方案1】:

如果我理解你的问题,你可以使用spread:

let data =[
    {
    alphabet: [
     {value: 1, name: "X" },
     {value: 4, name: "Y" },
     {value: 1, name: "Z"}
    ]
   },
  {
   alphabet: [
     {value: 1, name: "W" },
     {value: 4, name: "X" },
     {value: 1, name: "Y"}
    ]
  }
];

console.log(
  {
    alphabet : [
      ...data[0].alphabet,
      ...data[1].alphabet.filter(a=>!data[0].alphabet.some(b=>b.name===a.name)),
    ],
  },
  data[1],
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 2019-11-26
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多