首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要基于数组相对于对象数组的迭代来获取属性

需要基于数组相对于对象数组的迭代来获取属性
EN

Stack Overflow用户
提问于 2019-06-04 14:08:17
回答 3查看 41关注 0票数 1

我有一个对象数组,格式如下。每个对象都有几个属性和一个数组。如果数组中存在键,我必须获取一个属性。

考虑一下下面的对象:当我给key设置为7时,它应该返回'xyz‘。如果key是3,它应该给我'abc‘

代码语言:javascript
运行
复制
[
  {
    val : 'abc',
    arr : [1,2,3,4]
  },

  {
    val: 'xyz',
    arr : [7,8,9]
  }
]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-04 14:12:03

您可以使用find()includes()。使用主数组的查找,并检查该对象的arr是否为给定键。返回找到的对象的val属性。

代码语言:javascript
运行
复制
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))

票数 2
EN

Stack Overflow用户

发布于 2019-06-04 14:14:18

您可以使用Array.filter()来过滤满足元素(7)存在于数组中的条件的对象。在Array.some()的回调函数中,可以使用Array.includes()检查元素(7)是否存在于arr属性本身中:

代码语言:javascript
运行
复制
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);

票数 1
EN

Stack Overflow用户

发布于 2019-06-04 14:15:04

你也可以试试这个。

代码语言:javascript
运行
复制
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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56438190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档