Javascript 使用下划线向数组对象插入项

Javascript 使用下划线向数组对象插入项,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我想使用下划线在现有对象数组中插入一个id 输入数组 var arr = [{name:"iPhone"}, {name:"Samsung"}]; var arr = [{name:"iPhone", owner_id: "555"}, {name:"Samsung", owner_id: "555"}]; 预期输出阵列 var arr = [{name:"iPhone"}, {name:"Samsung"}]; var arr = [{name:"iPhone", owner_id: "

我想使用下划线在现有对象数组中插入一个id

输入数组

var arr = [{name:"iPhone"}, {name:"Samsung"}];
var arr = [{name:"iPhone", owner_id: "555"}, {name:"Samsung", owner_id: "555"}];
预期输出阵列

var arr = [{name:"iPhone"}, {name:"Samsung"}];
var arr = [{name:"iPhone", owner_id: "555"}, {name:"Samsung", owner_id: "555"}];
试着跟随,它的工作,但寻找更好的方式

devices = []
arr.forEach(function(data) {
    var device = {};
    device.owner_id = "555";
    device.name= data.name;
    devices.push(device )
})

不需要使用下划线。下面是使用.map方法的简单方法。回调中返回的每个对象都将插入到设备数组中

var devices = arr.map(function(data) {
    var device = {};
    device.owner_id = "555";
    device.name= data.name;

    return device;
})
如果您选择console.logdevices它将打印(当然取决于数据):


先压缩它们,然后使用地图

var-arr=[{name:“iPhone”},{name:“Samsung”}];;
var ageArr=[{owner_id:“555”},{owner_id:“555”}];
var newArr=uz.zip(arr,ageArr).map(函数(v){
返回扩展(v[0],v[1]);
});
控制台日志(newArr)

在数组上循环
arr
中的所有对象的
owner\u id
是否相同,并向每个元素添加新属性。除非您告诉我们当前方法存在的问题,否则我们无法建议任何“更好”的方法。您的问题最好表示为“我想创建一个包含来自输入数组的对象的新数组,每个对象都有一个新的
owner\u id
property”。换句话说,您不是在“向数组插入项”;而是在“向数组中的每个元素插入属性”。
return object.assign({},data,{owner\u id:“555”})
会更容易。或者只
返回{name:data.name,owner_id:“555”};
。是的。但是你可以很容易地在.map回调中实现逻辑!我相信OP只是在寻找一个指南来开始更复杂的事情:D@torazaburo