Lodash / Javascript - 如何找到嵌套在对象中的唯一键

时间:2017-05-21 16:02:43

标签: javascript ecmascript-6 lodash

我正在尝试浏览一个大型数据对象,比如说:

{
 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”的唯一值返回给我? E.g我想最终得到值

UniqueID1, UniqueID2,

无论是数组还是对象,都没关系。 任何有关这方面的帮助将非常感谢。感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用map()上的Object.keys()Set使用普通js来返回唯一键的数组。



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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

因为你标记了lodash,你可以这样做 as 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');

here是文档

答案 2 :(得分:1)

您可以使用Array.reduce和Set

在没有lodash的情况下执行此操作
const uniques = Object.keys(data).reduce((acc,key) => acc.add(data[key].id), new Set())
console.log(uniques)