简体   繁体   English

如何在JavaScript上将新元素添加到数组对象

[英]How to add new elements to the object of an array on javascript

I have an var arr = [{name:"Joe"}, {name:"Mark"}]; 我有一个var arr = [{name:"Joe"}, {name:"Mark"}]; I have the age array like var ageArr = [{age: 24}, {age: 30}] 我有一个年龄数组,如var ageArr = [{age: 24}, {age: 30}]

I need to programatically add the respective age of the objects 我需要以编程方式添加对象的各自年龄

My array need to looks like var arr = [{name:"Joe", age: 24}, {name:"Mark", age: 30}]; 我的数组需要看起来像var arr = [{name:"Joe", age: 24}, {name:"Mark", age: 30}];

I am using javascript and included the library underscore.js. 我正在使用javascript,并包含了underscore.js库。

Is there a cleaner way to achieve this. 有没有更清洁的方法来实现这一目标。 could some one help with a code snippet for this. 有人可以为此提供帮助的代码段。

you can 您可以

var newArr = arr.map(function(v, i) {
    return _.extend(v, ageArr[i]);
});

If you don't like using a free variable ageArr and access by index - you could zip them first: 如果您不喜欢使用自由变量ageArr并按索引访问-您可以先将其zip

var newArr = _.zip(arr, ageArr).map(function(v) {
    return _.extend(v[0], v[1]);
});

JSFiddle: http://jsfiddle.net/wrq2Lo8m/ JSFiddle: http : //jsfiddle.net/wrq2Lo8m/

You can use simple Javascript code to achieve this. 您可以使用简单的Javascript代码来实现此目的。

 var arr = [{name:"Joe"}, {name:"Mark"}]; var ageArr = [{age: 24}, {age: 30}] var newArr = [] for(var i =0 ; i < arr.length ; i++) { var newObj = new Object(); newObj.name = arr[i].name; newObj.age = ageArr[i].age; newArr.push(newObj) } alert(JSON.stringify(newArr)) 

Click on Run Code Snippet 单击运行代码片段

The most straightforward way: 最直接的方法:

// make sure names and ages are same length
function mapNameWithAge(names, ages) {
  var len = names.length,
    ans = [];
  for(var i=0;i<len;i++) {
    var obj = {
      "name": names[i].name,
      "age": ages[i].age
    }
    ans.push(obj);
  }
  return JSON.stringify(ans)
}

var arr = [{name:"Joe"}, {name:"Mark"}],
  ageArr = [{age: 24}, {age: 30}];
var result = mapNameWithAge(arr, ageArr);
console.log(result);

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

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