繁体   English   中英

有没有办法在JavaScript中为数组的每个对象添加相同的项目val =“4”?

[英]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.

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