【问题标题】: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,但我是新手

【问题讨论】:

  • 现在您的结果无效,因为每个嵌套对象都需要一个键。

标签: javascript arrays typescript javascript-objects


【解决方案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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-03
      • 2021-12-25
      • 2019-09-30
      • 2015-03-31
      • 2018-06-18
      • 1970-01-01
      • 2022-11-01
      • 2021-12-06
      相关资源
      最近更新 更多