我正在尝试浏览一个大型数据对象,比如说:
{
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,
无论是数组还是对象,都没关系。 任何有关这方面的帮助将非常感谢。感谢。
答案 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;
答案 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)