我有以下数据:
let Collection = [{
id: '1',
uid: 'u1',
rci: 'r1',
name: 'ClientName'
}, {
uid: 'u2',
name: 'ClientName 2'
}, {
rci: 'r3',
name: 'ClientName 3'
}]
id、uid和rci是三个不同的id属性(来自可怕的数据库合并结果)。
每个客户端:
- 至少拥有这三个属性中的一个
- 可能拥有所有三个id
现在问题来了: 我需要使用类似于以下对象的方式搜索此集合:
search: {
id: undefined,
uid: 'u3',
rci: 'r3'
}
这段文字的意思是,该集合中的第三个条目与其它条目不同,因为它们的属性匹配。
显然,有一个解决方案:
let match;
let test = Collection.forEach(item => {
Object.keys(search).forEach(key => {
console.log('iteration')
if(item[key] && item[key] === search[key]) {
match = item
}
})
})
但我正在寻找更加优雅的解决方案。我还在使用underscorejs。
注意:这是不可变的.js集合/映射/列表的POJO版本。如果可以通过Immutable.js实现同样的功能,那就太好了 :)
if(item[key] && item[key] === search[key]) {
"* 您的搜索值不能为零吗?(或任何其他假值?) - T.J. CrowderIsMatch
函数:http://underscorejs.org/#isMatch - Me.Namesearch
不会匹配第三个条目,因为第三个条目只有rci
而没有uid
或id
。 - T.J. Crowder