如何根据另一个对象数组的值获取一个对象数组键的值?

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)

【讨论】:

以上是关于如何根据另一个对象数组的值获取一个对象数组键的值?的主要内容,如果未能解决你的问题,请参考以下文章

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

从数组中的所有对象中获取特定键的值

NodeJS通过键的值在数组中查找对象[重复]

如何将对象中特定键的值存储到数组中 - Vue

从JSON中获取重复的对象键的值,并只用一个键替换返回。

如何获取选择选项的值,并使用它来查询数组,以填充另一个输入