我有一个类似的数组
我想按属性名称选择数组项,我正在使用lodash:
const result = _.map(this.thing, _.property('groups')).filter(x => x !== undefined);
但是我得到了数组数组
我需要的只是单个选定的属性数组。
知道如何实现这个目标吗?
答案 0 :(得分:0)
希望这些解决方案有所帮助
const arr = [ {'groups': ['item1','item2']},
{'categories':['x','y']}
]
var ouptut= arr.find(item=> {
return item[Object.keys(item).find(key=>key === 'groups')]
})
console.log(ouptut)

答案 1 :(得分:0)
试试这个>>>
var a = [{"p1":[3,4]},{"p2":[6,7]}];
function getArr(arr,key){
var res = [];
for(var v of arr){
if(v[key]!=undefined){
res = v[key];break;
}
};
return res;
}
console.log(getArr(a,"p1"));

答案 2 :(得分:0)
const output
= (Array.from(arr, (obj) => obj['product'], 'product')
.filter(x => typeof x !== 'undefined'))[0];
答案 3 :(得分:0)
如果您可以使用ES6 / ES7,您可以依赖Object.keys和Object.values来访问密钥(即属性名称)和值(您想要获取的数组):
var arr = [
{ groups: [1, 2 ] },
{ category: [1, 2, 3 ] },
{ subCategory: [1, 2, 3, 4 ] }
];
function pickArray(propertyName) {
var element = arr.find(el => Object.keys(el)[0] === propertyName)
return element ? Object.values(element)[0] : null;
}
var res = pickArray('category');
console.log(res);