如何从 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】:您可以使用find
和in
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】:您可以使用find
和hasOwnProperty
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 中的对象列表中获取键的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Python 中的“dict”对象列表中基于键提取值