将项目从另一个数组添加到对象数组

问题描述

我有一个这样的数组:

data = [1,2,3,4,5]

我有一个这样的对象数组:

obj = [{"Name":"ABC","Age":25,"Gender":"M"},{"Name":"DEF","Age":32,"Gender":"F"},{"Name":"PQR","Age":30,{"Name":"XYZ","Gender":"F"}]

我需要将数据数组的每个元素推送到数组的每个对象中。我的预期输出是这样的:

obj = [{"Name":"ABC","Gender":"M","Data":1},"Gender":"F","Data":2},"Data":3},"Data":4}]

我是这样试的:

for(let i = 0; i<data.length; i++){
   obj.push({data:data[i])
}

但这给出了一个不正确的结果:

obj = [{"Name":"ABC",{"Data":1},{"Data":2},{"Data":3},{"Data":4}]

我知道这是因为在将项目推入对象数组之前我没有遍历对象数组。但是我无法同时遍历数据和 obj。请帮我解决问题。提前致谢。

解决方法

有多种方法可以实现预期的输出。 这是其中一种方法,使用Array.map和解构

循环遍历数组

const data = [{"Name":"ABC","Age":25,"Gender":"M"},{"Name":"DEF","Age":32,"Gender":"F"},{"Name":"PQR","Age":30,{"Name":"XYZ","Gender":"F"}];
const array = [1,2,3,4,5];

const formattedData = (data,array) => data.map((obj,i) => (  
  {
    ...obj,Data: array[i]
  }
));

console.log(formattedData(data,array));
.as-console-wrapper {
  max-height: 100% !important;
}

,

它可以通过扩展运算符来解决。请看下面的代码。

Epoch 00039: val_loss did not improve from 0.25448
21/21 - 1s - loss: 0.1955 - r2: 0.8454 - val_loss: 0.2567 - val_r2: -2.2881e+05
Epoch 40/300

Epoch 00040: val_loss did not improve from 0.25448
21/21 - 1s - loss: 0.2391 - r2: 0.8107 - val_loss: 0.2590 - val_r2: -2.0155e+05
Epoch 41/300

Epoch 00041: val_loss did not improve from 0.25448
21/21 - 1s - loss: 0.2320 - r2: -1.6388e+00 - val_loss: 0.2568 - val_r2: -2.8148e+05
Epoch 42/300

Epoch 00042: val_loss did not improve from 0.25448
21/21 - 1s - loss: 0.2085 - r2: 0.8350 - val_loss: 0.2574 - val_r2: -2.4499e+05
Epoch 43/300

Epoch 00043: val_loss did not improve from 0.25448
21/21 - 1s - loss: 0.2198 - r2: 0.8065 - val_loss: 0.2579 - val_r2: -2.2686e+05
Epoch 44/300

predict successfully!                                     
test mse: 0.384
test rmse: 0.620
test mape: 0.004
test mae: 0.491
test evs: 0.881
test r2: 0.881

,

假设两个数组的长度相同:

for (let i = 0; i < data.length; i++) {
    obj[i].Data = data[i];
}
,
    DateTime startDate = _pickedStartDate;
    DateTime endDate = _pickedEndDate;
    final daysLeft = endDate.difference(startDate).inDays;
    print(daysLeft);
,

const data = [{"Name":"ABC","Gender": "F"},"Gender":"F "}]; const 数组 = [1,5];

这里需要考虑的几件事是我们需要长度与数据和数组相同的新对象。 在 map 函数的帮助下,我们可以获得 eachData 和 eachData 的索引,在这种情况下我们可以通过添加 Data 来改变对象。

我们需要添加右括号,因为Rest 参数必须是最后一个形参 忘记哪个会抛出语法错误

const formattedData = (data,array) => data.map((eachData,i)=> ({...eachData,Data:array[i]}))