javascript - 在Javascript中获取两个数组对象的差异
问题描述
我正在尝试获取“colors”中但不在“colors2”中的项目并显示它们,但我总是得到第一个数组的所有项目
let colors = [
{ key: "green", value: '#00b894' },
{ key: "lgreen", value: '#64ed9f' },
{ key: "yellow", value: '#edc611' },
{ key: "orange", value: '#fda044' },
{ key: "red", value: '#e74c47' }
]
let colors2 = [
{ key: "Option 1", value: "#00b894" },
{ key: "Option 2", value: "#e74c74" }
]
comparer = (otherArray) =>{
return function (current) {
return otherArray.filter(function (other) {
return other.value !== current.value
})
}
}
至于输出,我得到了颜色数组的所有项目。相反,我想显示 lgreen、yellow 和 orange,其值与 colors2 数组中的项目不同。
输出 :
Array [Object { key: "green", value: "#00b894" }, Object { key: "lgreen", value: "#64ed9f" }, Object { key: "yellow", value: "#edc611" }, Object { key: "orange", value: "#fda044" }, Object { key: "red", value: "#e74c47" }]
解决方案
使用filter()
和some()
let colors1=[{key:"green",value:"#00b894"},{key:"lgreen",value:"#64ed9f"},{key:"yellow",value:"#edc611"},{key:"orange",value:"#fda044"},{key:"red",value:"#e74c47"}],colors2=[{key:"Option 1",value:"#00b894"},{key:"Option 2",value:"#e74c74"}];
let result = colors1.filter(color1 => {
return !colors2.some(color2 => color1.value === color2.value)
})
console.log(result)
推荐阅读
- python - 如果没有更改,不要在上下文中返回表单?
- swiftui - SwiftUI 大小以适合使用 GeometryReader 的字体,字体太大
- c# - DropDownList.SelectedIndex 设置为 1
- python - pydoc将python子模块内容注入主模块
- sql - 在 HeidiSQL 中声明变量
- wpf - 为什么我的最大化和 DragMove 在我的 MouseDown 事件中不起作用?
- flutter - 使用 TextEditingController 在下拉菜单中传递项目,在颤动中
- xamarin.forms - 如何在方法 Resume 中将参数从 MainActivity 传递到 App.cs
- python - 将列表项与其他列值连接起来
- r - 字符匹配时如何获取id