将对象映射到另一个对象javascript

时间:2020-06-24 17:45:23

标签: javascript object

假设我们得到了这样的对象

growthArr.push.apply(growthArr, parentArr)

我们拥有的是

let formA = {
"a1": 1, "b1":2, "c1":3, 
"a2": 11, "b2":12, "c2":13, 
"a3": 21, "b3":22, "c3":23
}

结果必须是

let formB = {
"a1": 0, "b1":0, "c1":0, 
"a2": 0, "b2":0, "c2":0
}

一旦给定的对象属性被填满,它必须为其余的映射类序列创建一个新对象。

2 个答案:

答案 0 :(得分:0)

构建一个数组,该数组保存包含formA的所有值所需的formB形状的对象。
通过使用来自formA的值(以formB的键/值的数量的值的组)填充值来构建[key,value]对。使用fromEntries将其转换为对象。

let formA = {
"a1": 1, "b1":2, "c1":3, 
"a2": 11, "b2":12, "c2":13, 
"a3": 21, "b3":22, "c3":23
}

let formB = {
"a1": 0, "b1":0, "c1":0, 
"a2": 0, "b2":0, "c2":0
}

const keys = Object.keys(formB)
const values = Object.values(formA)

console.log(
// build array that is formA.size/formB.size rounded up, map values
Array(Math.ceil(values.length/keys.length)).fill().map((obj,i) => 
  // build object using keys from formB, with values from formA
  Object.fromEntries(keys.map((key,j)=>[key,values[i*keys.length+j]||0])))
)

答案 1 :(得分:-1)

您的帖子不清楚,但我认为您正在尝试将两个对象合并为一个。

这可以通过es6 spread operator完成。 Here is the MDN docs代表spread operator

这是我写的一个示例,显示如何使用spread operator合并两个对象,然后记录合并对象的键/值:

let object1 = {
    firstKey: 'firstValue',
    secondKey: 'secondValue'
};

let object2 = {
    secondObjectKey: 'secondObjectValue'
}


let mergeObjects = {...object1, ...object2};


for (const [key, value] of Object.entries(mergeObjects)) {
  console.log(`${key}: ${value}`);
}

您也可以在code sandbox中查看示例。