我有一个对象数组,格式如下。每个对象都有几个属性和一个数组。如果数组中存在键,我必须获取一个属性。
考虑一下下面的对象:当我给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
复制相似问题