通过属性与另一个对象的键比较对象数组
Compare array of objects by property with key of another object
我想比较数据。示例数组对象名称。value property value with wcObject。notCoveredList键,如果键匹配,我想推所有匹配值的wcObject到一个数组,以便在UI中显示。如果键不匹配,我想要data的name.desc属性值。通过推入的数组对象的例子,删除末尾未覆盖的文本。
data = {
examples : [
{
name: {
value:"someOne",
desc: "some random word not covered"
},
type: {
value:"General",
desc:"General"
}
}, {
name: {
value:"secondOne",
desc: "second on in the queue not covered"
},
type: {
value:"General",
desc:"General"
}
}, {
name: {
value:"thirdOne",
desc: "third one from the last not covered"
},
type: {
value:"General",
desc:"General"
}
}
]
}
wcObject = {
notCoveredList : [
{ someOne: "anyone can start " },
{ secondOne: "second One cannot start" },
{ thirdOne: "third One can be allowed" }
]
}
那么,下面的代码:
- 建立一个过滤器对象。我们获取所有的键
wcObject.notCoveredList
,并使它们成为单个对象上的键一个未定义的值),这样我们就可以用单个键来查找这些键当我们需要过滤时,调用hasOwnProperty()而不是在数组上迭代。 - 将
data.examples
数组的每个成员映射到它自己的name.desc
属性或[去掉' not covered']name.value
属性。
.
wcNotCoveredKeys = wcObject.notCoveredList.reduce((memo, item) => {
// value is empty for all, we only care about keys.
memo[Object.keys(item)[0]] = undefined;
return memo;
}, {})
// having built up our lookup table of those not covered, we continue:
forUI = data.examples.map(example => {
if (wcNotCoveredKeys.hasOwnProperty(example.name.value)) {
return example.name.value;
}
else {
notCoveredString = example.name.desc;
cutOutIndex = notCoveredString.indexOf(' not covered');
return notCoveredString.slice(0, cutOutIndex)
}
});
(更新为集成字符串切片)
只是要清楚:如果您从wcObject中删除了第二个项目。notCoveredList,那么您将在forUI中得到的输出(给定您提供的示例数据结构/值)将是
["someOne", "second on in the queue", "thirdOne"]
相关文章:
- 使用javascript比较对象中的对象值和数组长度
- 角度深度比较对象(特定属性除外)
- 比较对象类型时是否需要第三个=
- 如何在 JavaScript 中使用 # 符号比较对象
- 使用isBetween函数比较对象中的键值
- 使用lodash比较对象并从数组中删除对象
- 按值比较对象
- 比较对象数组,最佳方式
- 比较对象中的元素
- 如何通过比较对象属性来查找列表中的对象
- JavaScript松散比较对象和字符串
- 是否有一个实用程序来深度比较对象在谷歌闭包库
- 使用Linq.js比较对象数组的每个成员
- 如何在推入数组之前比较对象
- 当比较对象时,有选择地控制角$watch的发射
- 比较对象并只获取存在于所有对象中的对象
- 为什么ava在比较对象列表和对象文本列表时失败
- 使用Lodash比较对象数组和整数数组
- 比较对象数组中的值与对象响应数组中的值
- AngularJS + Jasmine:比较对象