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

Posted

技术标签:

【中文标题】如何从 Javascript 中的对象列表中获取键的值?【英文标题】:How do I get the value of a key from a list of objects in 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 调用得到的返回,数据就是这种格式。 Find object by id in an array of JavaScript objects的可能重复 @str 与的问题不完全相同 【参考方案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'))

【讨论】:

这可能会导致不必要的副作用和错误的真实情况。 ***.com/questions/455338/…【参考方案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']

【讨论】:

以上是关于如何从 Javascript 中的对象列表中获取键的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据对象数组中的键获取值javascript

如何获取 JavaScript 字典中的键集合? [复制]

如何从 Python 中的“dict”对象列表中基于键提取值

JWT:如何从声明中的特定键获取值列表。 C# Asp.Net 核心

模板中的 Django 字典:从另一个对象属性中获取键

如何从javascript中的列表中获取音频元素的src