从另一个数组中按属性名称选择数组

时间:2017-11-03 05:03:15

标签: javascript arrays typescript

我有一个类似的数组

enter image description here

我想按属性名称选择数组项,我正在使用lodash:

const result = _.map(this.thing, _.property('groups')).filter(x => x !== undefined);

但是我得到了数组数组

enter image description here

我需要的只是单个选定的属性数组。

enter image description here

知道如何实现这个目标吗?

4 个答案:

答案 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);