如何在Javascript中从对象列表中获取键的值?

3

我有一个对象列表,它如下所示:

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

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

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


2
你能展示一下你目前尝试过的吗? - Shidersz
这是一种奇怪而有些不方便的数据结构。你使用一个由单独对象数组组成,每个对象都有唯一键名的数组,而不是像 obj = {a: [1,2,3], b: [4,5,6], c: [7,8,9]} 这样只使用一个对象,有什么原因吗? - Daniel Beck
实际上这是我从 API 调用中获取的返回值,数据以此格式呈现。 - Viktor1903
我无法将其与我的问题联系起来,因此我发布了一个问题。我已经尝试很长时间来弄清楚这个问题。 - Viktor1903
显示剩余2条评论
4个回答

2
你可以使用find()Object.keys()。将keys数组的第一个元素与给定的键进行比较。"Original Answer"翻译成"最初的回答"。

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'))


0

你可以使用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'))


1
这可能会导致不必要的副作用和错误的结果。 - baao

0
你可以使用 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'));


-1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接