簡體   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