[英]Lodash / Javascript - how to find unique keys nested inside objects
我试图遍历大量数据,例如形式:
{
data1: {
keyA: 'AValue',
keyB: 'BValue',
id: 'UniqueID1'
},
data2: {
keyA: 'AValue',
keyB: 'BValue',
id: 'UniqueID2'
},
data3: {
keyA: 'AValue',
keyB: 'BValue',
id: 'UniqueID1'
},
data4: {
keyA: 'AValue',
keyB: 'BValue',
id: 'UniqueID2'
}
}
有没有一种方法可以遍历此对象并将“ id”的唯一值返回给我? 例如,我想谈谈这些价值观
UniqueID1, UniqueID2,
无论是数组还是对象,都没关系。 任何帮助,将不胜感激。 谢谢。
您可以使用纯js在Object.keys()
上使用map()
Object.keys()
并通过Set
返回唯一键数组来实现。
var data = {"data1":{"keyA":"AValue","keyB":"BValue","id":"UniqueID1"},"data2":{"keyA":"AValue","keyB":"BValue","id":"UniqueID2"},"data3":{"keyA":"AValue","keyB":"BValue","id":"UniqueID1"},"data4":{"keyA":"AValue","keyB":"BValue","id":"UniqueID2"}} var uniq = [...new Set(Object.keys(data).map(e => data[e].id))] console.log(uniq)
或者使用Lodash,您可以使用map
,然后使用uniq
。
var data = {"data1":{"keyA":"AValue","keyB":"BValue","id":"UniqueID1"},"data2":{"keyA":"AValue","keyB":"BValue","id":"UniqueID2"},"data3":{"keyA":"AValue","keyB":"BValue","id":"UniqueID1"},"data4":{"keyA":"AValue","keyB":"BValue","id":"UniqueID2"}} var uniq = _.uniq(_.map(data, 'id')) console.log(uniq)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>
您可以使用Array.reduce和Set而不用破折号完成此操作
const uniques = Object.keys(data).reduce((acc,key) => acc.add(data[key].id), new Set())
console.log(uniques)
因为您标记了lodash,所以可以像array这样来做:
var myArray = [
{
keyA: 'AValue',
keyB: 'BValue',
id: 'UniqueID1'
},
{
keyA: 'AValue',
keyB: 'BValue',
id: 'UniqueID2'
},
{
keyA: 'AValue',
keyB: 'BValue',
id: 'UniqueID1'
},
{
keyA: 'AValue',
keyB: 'BValue',
id: 'UniqueID2'
}
];
_.map(myArray, 'id');
这是文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.