【问题标题】:How do I get the value of a key from a list of objects in Javascript?如何从 Javascript 中的对象列表中获取键的值?
【发布时间】:2019-12-04 04:05:43
【问题描述】:

我有以下方式的对象列表:

obj = [ { a:[1,2,3] }, { b:[4,5,6] }, { c:[7,8,9] } ]

如何使用 javascript 获取键的对应数组?

例如。对于 b,我会得到 [4,5,6]。我需要一个函数,我可以将键作为输入,它会返回与之关联的相应数组。

【问题讨论】:

  • 你能告诉我们你到目前为止做了什么吗?
  • 这是一个奇怪且有点不方便的数据结构。您是否有理由使用一组单独的对象,每个对象都有一个唯一的键名,而不是像 obj = {a: [1,2,3], b: [4,5,6], c: [7,8,9]} 这样的单个对象?
  • 其实这是我从 api 调用得到的返回,数据就是这种格式。
  • @str 与的问题不完全相同

标签: javascript typescript


【解决方案1】:

您可以使用find()Object.keys()。比较keys数组的第一个元素和给定的key。

const arr = [ { a:[1,2,3] }, { b:[4,5,6] }, { c:[7,8,9] } ];
const getByKey = (arr,key) => (arr.find(x => Object.keys(x)[0] === key) || {})[key]

console.log(getByKey(arr,'b'))
console.log(getByKey(arr,'c'))
console.log(getByKey(arr,'something'))

【讨论】:

    【解决方案2】:

    您可以使用findin

    let obj = [ { a:[1,2,3] }, { b:[4,5,6] }, { c:[7,8,9] } ]
    
    let findByKey = (arr,key) => {
      return (arr.find(ele=> key in ele ) || {})[key]
    }
    
    console.log(findByKey(obj,'b'))
    console.log(findByKey(obj,'xyz'))

    【讨论】:

    【解决方案3】:

    您可以使用findhasOwnProperty

    const arr = [ { a:[1,2,3] }, { b:[4,5,6] }, { c:[7,8,9] } ];
    
    const byKey = (arr, key) => {
        return (arr.find(e => e.hasOwnProperty(key)) || {})[key];
    };
    
    console.log(byKey(arr, 'a'));

    【讨论】:

      【解决方案4】:

      只需使用属性索引器,即obj['b']

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-16
        • 2019-08-07
        • 1970-01-01
        • 1970-01-01
        • 2012-07-02
        • 1970-01-01
        • 2017-11-09
        • 2011-03-05
        相关资源
        最近更新 更多