【问题标题】:How to compare object based on key and value and remove from array如何根据键和值比较对象并从数组中删除
【发布时间】:2021-04-16 06:43:09
【问题描述】:

我在 const 行中有以下数据。

【问题讨论】:

  • 在最终输出中,您想要 a 和 d 还是仅来自上下文的 d 或仅来自数据的 a?
  • 在 this.selectedParameterContext 中,现在有两个对象,在第一个对象中我想保留 a 和 d。在第二个对象中我只想要 d,bcz a 在第二个对象中不是 avlbl
  • 只需要保留那些在 rows.selected_pa​​rameter_value 中是 avlbl 的对象,剩下的所有对象都需要从 this.selectedParameterContext 中删除
  • 你能创建一个 Stackblitz 示例吗?
  • 您好,我已经编辑了我的问题,请再次查看。

标签: javascript arrays angular angular8


【解决方案1】:

您可以使用Array.filter 过滤数据/源,方法是通过将每个对象与比较/目标数组中存在的相同key-value 匹配来比较每个对象,并仅返回源数组中不匹配的对象。

let data = [{label_value: 'a', parameter_value: 'a'}, {label_value: 'b', parameter_value: 'b'}, {label_value: 'c', parameter_value: 'c'}, {label_value: 'd', parameter_value: 'd'}]
let contextData = [{label_value: 'b', parameter_value: 'b'}, {label_value: 'c', parameter_value: 'c'}];

const removeMatchingData = (data, toCompareWith) => {
  return data.filter(({ label_value }) => !toCompareWith.some(compareObj => compareObj.label_value === label_value));
}

console.log(removeMatchingData(data, contextData));

contextData = [{label_value: 'b', parameter_value: 'b'}, {label_value: 'c', parameter_value: 'c'}, {label_value: 'e', parameter_value: 'e'}];

console.log(removeMatchingData(contextData, data));

【讨论】:

  • 我已经用示例编辑了我的问题,请再次查看。现在会更清楚了。
猜你喜欢
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 2023-03-02
  • 2017-12-01
相关资源
最近更新 更多