我有一个对象数组,格式如下。每个对象都有几个属性和一个数组。如果数组中存在键,我必须获取一个属性。
考虑一下下面的对象:当我给key设置为7时,它应该返回'xyz‘。如果key是3,它应该给我'abc‘
[
{
val : 'abc',
arr : [1,2,3,4]
},
{
val: 'xyz',
arr : [7,8,9]
}
]发布于 2019-06-04 14:12:03
您可以使用find()和includes()。使用主数组的查找,并检查该对象的arr是否为给定键。返回找到的对象的val属性。
const arr = [
{
val : 'abc',
arr : [1,2,3,4]
},
{
val: 'xyz',
arr : [7,8,9]
}
]
const getVal = (arr,key) => (arr.find(x => x.arr.includes(key)) || {}).val;
console.log(getVal(arr,3))
console.log(getVal(arr,7))
发布于 2019-06-04 14:14:18
您可以使用Array.filter()来过滤满足元素(7)存在于数组中的条件的对象。在Array.some()的回调函数中,可以使用Array.includes()检查元素(7)是否存在于arr属性本身中:
const data = [
{
val : 'abc',
arr : [1,2,3,4]
},
{
val: 'xyz',
arr : [7,8,9]
}
]
const res = data.filter(obj => obj.arr.includes(7))[0].val;
console.log(res);
发布于 2019-06-04 14:15:04
你也可以试试这个。
var x = [{
val: 'abc',
arr: [1, 2, 3, 4]
},
{
val: 'xyz',
arr: [7, 8, 9]
}
];
var test = function(data, key) {
for (let i of x) {
if (i.arr.indexOf(key) >= 0)
return i.val;
}
}
// example
console.log(test(x,9));https://stackoverflow.com/questions/56438190
复制相似问题