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