簡體   English   中英

向集合中的每個對象添加新屬性

[英]Add a new property to each object in a collection

您能幫我簡化將新屬性添加到對象數組的方式嗎?

我有一個這樣的東西,

response.data = [ {'year':2015, 'month':1},
                  {'year':'2016','month':2}
];

我想添加一個新屬性“ monthName”

response.data = [{'year':2015, 'month':1,'monthName':'January'},
                 {'year':'2016','month':2,'monthName':'February'}
];

這就是我所做的

 var data = response.data;    // Improvement
 var ctr = 0;
 $.each(response.data, function(a,b){
         data[ctr].monthName = monthNumberToName(b.month);
         ctr++;
 });

 return data;

您能幫我簡化代碼嗎,謝謝!

更簡單的版本可能是

return response.data.map( s => Object.assign( {}, s, { monthName : monthNumberToName( s.month) } ); 

您可以使用map來使代碼看起來更短且易於管理:

 var response = {}; response.data = [ {'year':2015, 'month':1}, {'year':'2016','month':2} ]; var data = response.data; data.map((item)=>{ item.monthName = monthNumberToName(item.month); }); function monthNumberToName(monthNumber){ if(monthNumber == 1){ return "January"; } if(monthNumber == 2){ return "February"; } } console.log(response.data); 

您可以使用forEach及其第一個參數:

const data = response.data;
data.forEach(d => d.monthName = monthNumberToName(d.month));
return data;
function addProp(){
   var data = res.data;   
    $.each(res.data, function(a,b){
         //b is object and //a is the index
         b.monthName = monthNumberToName(b.month);
    });
  return data;
}
var monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];

var response = {};
response.data = [ 
  {'year':2015, 'month':1},
  {'year':'2016','month':2}
]; 

response.data.map((item,key)=>{
item.monthName =  monthNames[key];
});

也許您可以嘗試一下。

const months = [
  'January',
  'February',
  'March',
  'April',
  'May',
  'June',
  'July',
  'August',
  'Septemper',
  'October',
  'November',
  'December'
]

var data = [
  {'year':2015, 'month':1},
  {'year':'2016','month':2}
]

data = data.map(m=> {
  m['monthName'] = months[m.month - 1]
  return m
})

console.log(data)

Lodash極大地簡化了代碼。

您可以這樣做:

維持多個月:

const months = ["Jan","Feb", "Mar"];

let data = [ {'year':2015, 'month':1},
    {'year':'2016','month':2}
];

_.forEach(data, function(value, key) {
  value["monthName"] = months[value.month - 1];
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM