简体   繁体   English

在 javascript 中操作两个 arrays

[英]Manipulating two arrays in javascript

I have a array as follows:我有一个数组如下:

myNumberArray  = [1,2,3,4]

I have one another array as follows:我有另一个数组如下:

data = [
{
 "id":34
},
{
 "id":35
},
{
 "id":36
},
{
 "id":37
}
]

At run time I can have many elements.在运行时我可以有很多元素。 But number of elements in both array will always be same.但是两个数组中的元素数量总是相同的。 I want to manipulate data array such that it creates one attribute "number" in an element and assign number from myNumberArray to that number attribute.我想操作数据数组,使其在元素中创建一个属性“数字”,并将 myNumberArray 中的数字分配给该数字属性。

Final array Will look as follows:最终数组将如下所示:

data = [
{
 "number":1,
 "id":34
},
{
 "number":2,
 "id":35
},
{
 "number":3,
 "id":36
},
{
 "number":4,
 "id":37
}
]

How can I do that?我怎样才能做到这一点?

myNumberArray  = [1,2,3,4]

data = [
 {
  "id":34
 },
 {
  "id":35
 },
 {
  "id":36
 },
 {
  "id":37
 }
]

data.forEach((elem, index)=>{
  data[index]["number"]=myNumberArray[index];
})

console.log(data);

This should solve your problem.这应该可以解决您的问题。

Explanation:解释:

I used forEach to iterate over the data array, forEach accepts two parameters, the current value at an index, and the value.我使用forEach遍历数据数组, forEach接受两个参数,索引处的当前值和值。

Since, yours is a one-to-one mapping, we are using the current index to access the value at the same index in myNumberArray and assigning that new value in data for number key.由于您的映射是一对一的,因此我们使用当前索引来访问myNumberArray中相同索引处的值,并在data中为number键分配该新值。

Try the following solution:尝试以下解决方案:

 let myNumberArray = [1,2,3,4]; let data = [ { "id":34 }, { "id":35 }, { "id":36 }, { "id":37 } ]; const updatedArray = data.map((item,index)=> { return {...item, "number":myNumberArray[index] } }); console.log(updatedArray);

 myNumberArray = [1,2,3,4] let data = [ { "id":34 }, { "id":35 }, { "id":36 }, { "id":37 } ] data = data.map( (x, i) => ({ number: myNumberArray[i], id: x.id}) ) console.log(data)

for (let i in myNumberArray) { Object.assign(data[i], { number: myNumberArray[i] }) }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM