繁体   English   中英

Lodash / Javascript-如何查找嵌套在对象内部的唯一键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM