![](/img/trans.png)
[英]Loop through an Array, add each item to an object and push it to an array in Javascript
[英]Is there a way to add the same item val=“4” to each object of array in JavaScript?
有没有办法在JavaScript中为数组的每个对象添加相同的项目val =“4”?
让我们说有
var arr = [{"num":"111"},{"ttt":"123","rss":"456"},...];
我想得到
arr2 = [{"num":"111", "val":"4"},{"ttt":"123", "rss":"456", "val":"4"},...];
有可能在一行中使用.push()
到数组或类似的东西吗?
.map
函数将为您创造奇迹!
var arr2 = arr.map(function(item) {
item.val = 4;
return item;
});
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
虽然tymeJV的解决方案有效,但我发现它有点令人困惑,因为.map()
意味着返回新对象而.forEach()
意味着做副作用。
如果你想改变原始数组,那么这对IMO更有意义
arr.forEach(function(item) {
item.val = 4;
})
如果你想返回一个新阵列并保持旧阵列不变,那么这应该可行
var arr2 = arr.map(function(item) {
return Object.assign({}, item, {val: 4})
})
或者,如果您的目标是允许箭头功能的浏览器:
var arr2 = arr.map(item => Object.assign({}, item, {val: 4}) );
(非常类似于@tymeJV)
您实际上可以使用.forEach(..)
而不是.map
。 从技术上讲,你可以用两者来实现同样的东西,但是有一种微妙的风格(跨语言)差异。 当您将每个对象从一个表单转换为另一个表单而不修改原始对象时,请使用map
。 如果要修改原始对象, 通常使用forEach
。
//Makes changes in place (original array is modified.
arr.forEach(function(item) {
item.val = 4;
});
//To ensure the original object `arr` isn't modified
arr2 = arr.map(function(item) {
var cloneObj = clone(item); //For clone see link below
cloneObj.val = 4;
return cloneObj;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.