Javascript如何将一个新元素从初始数组推到相同索引的数组中的每个数组?

1990年

我想使用两个索引从另一个数组向数组添加新属性。

例如,假设我有以下数组:

initArray = [
  { name: 'John', family: 'Doe'},
  { name: 'Joanna', family: 'Doe'}
];

我想从中获取并将其推入的数组initArray

genderArray = [
  { gender: 'Male' },
  { gender: 'Female' }
];

我需要的是一个最终的数组,例如:

initArray = [
  { name: 'John', family: 'Doe', gender: 'Male'},
  { name: 'Joanna', family: 'Doe', gender: 'Female'}
];

我尝试了以下方法:

ngOnInit() {
  Object.keys(this.genderArray).forEach((idx) => {
    console.log(this.initArray)
    this.initArray[idx].push(this.genderArray)
  });

  console.log(this.initArray)
}

但是返回了以下错误:

错误:_this.initArray [idx] .push不是函数

这是一堆堆炸弹

Raina77ow

首先,你不应该推到initArray:你不添加元素initArray,而是一个属性添加到它的每个元素。

一种可能的方法是:

Object.assign(this.initArray[idx], this.genderArray[idx]);

...,或者,出于某种原因,如果您想创建一个全新的新“丰富”对象数组,而不是直接修改对象:

this.initArray[idx] = {...this.initArray[idx], ...this.genderArray[idx]};

其次,不要使用Object.keys()遍历数组:forEach()如果在函数内进行了所有转换map,则使用;如果返回一个新元素并希望最后有一个新数组,请使用。

因此,您的函数可能如下所示:

ngOnInit() {
  this.genderArray.forEach((element, index) => {
    Object.assign(this.initArray[index], element);
  });

  console.log(this.initArray)
}

... 要么 ...

ngOnInit() {
  this.initArray = this.initArray.map((element, index) => {
     { ...element, ...this.genderArray[index] }
  });

  console.log(this.initArray)
}

就个人而言,我总是发现代码'x = x.map(transformer())`非常可疑(如果仍然重新分配,为什么不使用forEach?),但这取决于实现样式的选择。


如果要“混合”的数组元素中不止一个属性,但您只想取一个,则可以直接使用:

Object.assign(this.initArray[idx], { gender: this.genderArray[idx].gender });

...在任务中使用解构:

const { gender } = this.genderArray[idx]; 
Object.assign(this.initArray[idx], { gender });

...或者只是硬着头皮做任务,就像在过去的无语法语法的美好日子里那样:

this.initArray[idx].gender = this.genderArray[idx].gender;

在这种特殊情况下,最后一个实际上看起来是最好的方法。它的缺点是必须重复属性名称,但是如果您希望在源数组和目标数组中对props进行不同的命名,这也可能会派上用场。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将数组中相同索引处的元素求和成单个数组?

numpy:对于一个数组中的每个元素,在另一个数组中查找索引

将每个数组的第一个元素设置为索引,并保留为数组数组的数据

如何基于JavaScript中另一个数组的索引从数组中选择元素?

映射Javascript中数组数组中每个数组的第一个元素

如何将一个数组元素分配给另一数组?

如何将元素从一个数组复制到JavaScript中的另一个数组?

JS将一个数组元素推到末尾

如何将一个数组与另一个数组匹配,但将匹配的元素保存在JavaScript中

如何将对象从对象中的数组推到另一个数组?

如何使用PHP将数组元素推到另一个数组中的特定位置

JavaScript如何将数组属性提取到另一个数组中?

如何将3个数组合并为具有相同索引的一个数组-JavaScript

如何使用Python将数组中的元素与另一个数组中的每个元素相乘

从一个数组获取索引并更新第二个数组中相同索引的元素

如何将两个数组元素(int)附加到一个数组元素(int)中?

在Javascript中,如何将多维数组除以另一个数组

如何将一个数组的元素与Javascript中另一个数组的索引进行比较?

如何将对象从oner数组推到另一个数组?

在AngularJS中使用`splice`方法之前,如何将值从一个数组推到另一个数组?

如何将数组中的特定元素放到另一个数组中

如何将JavaScript中的多个数组与第一个元素合并

你如何将数组的每个部分分成另一个数组?

如何遍历对象数组,将键推到另一个数组

如何将数组的每个元素压缩到 ruby 中另一个数组的每个元素?

如何将一个数组中的每个元素减去另一个?

如何将数组的元素乘以具有相同索引的另一个数组的元素?

将数组中的每个元素与另一个数组中的对应元素相乘

如何拼接一个数组并在 JavaScript 中为每个数组索引添加随机数