从一组对象中选取值并创建一个新对象:Javascript

时间:2021-03-17 17:54:28

标签: javascript arrays ecmascript-6 ecmascript-5

我有一个以下格式的对象数组:

input = [ 
  { key : "Test1", value: 25, total: 100},
  { key : "Test2", value: 35, total: 200},
  { key : "Test3", value: 45, total: 300},
  { key : "Test4", value: 55, total: 400},
  { key : "Test5", value: 65, total: 500}
]

我基本上必须从中获取一些属性并形成一个看起来像这样的新数组。 text 等价于在单独的对象中维护的文本表示。

textObj = { "Test1" : "Test1Eq" , "Test2" : "Test2Eq" , "Test3" : "Test3Eq" , "Test4" : "Test4Eq" , "Test5" : "Test6Eq" }

我只需要获取 Text1, Text4, Text 5 的计数并返回其等效文本及其在新数组中的计数。

结果

output = [ 
  { text : "Test1Eq", count: 25},
  { text : "Test4Eq", count: 55},
  { text : "Test5Eq", count: 65}
]

我试过的方法

const res = input.map(item=>{
      return{
        text :textObj[item.key],
        count: item.count
      }
});

1 个答案:

答案 0 :(得分:1)

要查找计数,您可以使用 array#find

const input = [ { key : "Test1", value: 25, total: 100}, { key : "Test2", value: 35, total: 200}, { key : "Test3", value: 45, total: 300}, { key : "Test4", value: 55, total: 400}, { key : "Test5", value: 65, total: 500} ],
      textObj = { "Test1" : "Test1Eq" , "Test2" : "Test2Eq" , "Test3" : "Test3Eq" , "Test4" : "Test4Eq" , "Test5" : "Test6Eq" },
      keys = ['Test1', 'Test4', 'Test5'],
      result = keys.map(key => ({
        text: textObj[key],
        count: input.find(o => o.key === key)?.value
      }));
console.log(result);