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