如何根据另一个对象数组的值获取一个对象数组键的值?
Posted
技术标签:
【中文标题】如何根据另一个对象数组的值获取一个对象数组键的值?【英文标题】:how to get the values of one array of objects key based on values of another array of objects? 【发布时间】:2020-09-17 06:28:06 【问题描述】: data =
'uid': 12, 'amount': 100,
'uid': 23, 'amount': 250
object = 12:'name':'Paul', 'id':12, 20:'name':'Mike', 'id':20, 41:'name':'Jack', 'id':41, 23:'name':'Luke', 'id':23
预期的输出是
const result = 'name':'Paul', 'id': 12, 'amount':100, 'name':'Luke', 'id': 12, 'amount': 250
我尝试将 uid 映射为获取值和数组,例如
uids = [12, 23]
然后
names = uids.map(key => object[key].name);
以便我可以使用它们来映射另一个对象中的键和名称,但无法弄清楚 我知道这是基本的 javascript,但我是新手
【问题讨论】:
现在您的结果无效,因为每个嵌套对象都需要一个键。 【参考方案1】:您可以简单地使用给定的键映射对象。
var array = [12, 23],
object = 12: name: 'Paul', id: 12 , 20: name: 'Mike', id: 20 , 41: name: 'Jack', id: 41 , 23: name: 'Luke', id: 23 ,
result = array.map(key => object[key]);
console.log(result);
【讨论】:
非常感谢@Nina,这就是诀窍......我实际上必须更新我的问题,这是冰山一角:)【参考方案2】:var data =
'uid': 12, 'amount': 100,
'uid': 23, 'amount': 250
;
var object = 12:'name':'Paul', 'id':12, 20:'name':'Mike', 'id':20, 41:'name':'Jack', 'id':41, 23:'name':'Luke', 'id':23;
var uids = [12, 23];
mappedValues = uids.map(key => object[key]);
var result = mappedValues.map((item, i) => Object.assign(, item, data[i]));
console.log(result);
【讨论】:
【参考方案3】:首先data
的结构是错误的。它应该是一个数组。然后你可以这样做:
data = [
'uid': 12, 'amount': 100,
'uid': 23, 'amount': 250
];
object = 12:'name':'Paul', 'id':12, 20:'name':'Mike', 'id':20, 41:'name':'Jack', 'id':41, 23:'name':'Luke', 'id':23;
for(let key in object)
var match = data.filter(i=>i.uid.toString() === key);
if(match && match.length)
object[key].amount = match[0].amount;
console.log(object)
【讨论】:
以上是关于如何根据另一个对象数组的值获取一个对象数组键的值?的主要内容,如果未能解决你的问题,请参考以下文章