![](/img/trans.png)
[英]Modify the object that is pushed in an array when using an array.push that calls a function in Angular/JavaScript *array.push(function(parameter))*
[英]array.push(object) not pushed at the end of the loop in javascript
var temparray1 = [[1,3,4],[5,6,7],[8,9,10]];
var final = [];
var obj = {};
for(var temp in temparray1){
for(var test in temparray1[temp]){
obj.b = temparray1[temp][0];
obj.c = temparray1[temp][1];
obj.d = temparray1[temp][2];
}
console.log(obj);
final.push(obj);
}
电流输出
[{ b: 8, c: 9, d: 10 }
{ b: 8, c: 9, d: 10 }
{ b: 8, c: 9, d: 10 }]
预期输出 :
[{ b: 1, c: 3, d: 4 }
{ b: 5, c: 6, d: 7 }
{ b: 8, c: 9, d: 10 }]
我在node.js -v 8.1.x
服务器中运行我的JavaScript
在控制台中for循环的末尾,它将打印所需的输出,但不打印在数组推中
可能是将obj设置在for循环之外,因此道具被覆盖,并且将同一对象多次推入数组。 只需将obj声明移入循环即可。 您可能只需要外部循环。
顺便说一句:
let final = temparray1.map(
([b,c,d]) => ({b,c,d})
);
这就是你想要的
var temparray1 = [[1,3,4],[5,6,7],[8,9,10]];
var final = [];
for(var temp in temparray1){
var obj = {};
obj['b'] = temparray1[temp][0];
obj['c'] = temparray1[temp][1];
obj['d'] = temparray1[temp][2];
final.push(obj);
}
console.log(final);
希望这可以帮助!
var temparray = [[1, 3, 4], [5, 6, 7], [8, 9, 10]]; const final = temparray.map(a => ({ b: a[0], c: a[1], d: a[2] })); console.log(final);
您可以使用Array#map
并返回具有所需属性的对象。
var array = [[1, 3, 4], [5, 6, 7], [8, 9, 10]], result = array.map(function (a) { return { b: a[0], c: a[1], d: a[2] }; }); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
使用ES6,您可以使用Object.assign
和spread语法...
映射内部数组和键数组。
var array = [[1, 3, 4], [5, 6, 7], [8, 9, 10]], keys = ['b', 'c', 'd'], result = array.map(a => Object.assign(...keys.map((k, i) => ({ [k]: a[i] })))); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.