Javascript 向集合中的每个对象添加新属性
您能帮助我简化向对象数组添加新属性的方式吗 我有一个这样的物体Javascript 向集合中的每个对象添加新属性,javascript,arrays,object,Javascript,Arrays,Object,您能帮助我简化向对象数组添加新属性的方式吗 我有一个这样的物体 response.data = [ {'year':2015, 'month':1}, {'year':'2016','month':2} ]; 我想添加一个新属性“monthName” response.data = [{'year':2015, 'month':1,'monthName':'January'}, {'year':'2016','month':
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) } );
更简单的版本可能是
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.map((项目)=>{
item.monthName=MonthNumbertName(item.month);
});
函数monthNumberToName(monthNumber){
如果(月数==1){
返回“一月”;
}
如果(月数==2){
返回“二月”;
}
}
console.log(response.data)代码>您可以使用map
使您的代码看起来更短且易于管理:
var-response={};
response.data=[
{'year':2015,'month':1},
{'year':'2016','month':2}
];
var数据=响应数据;
data.map((项目)=>{
item.monthName=MonthNumbertName(item.month);
});
函数monthNumberToName(monthNumber){
如果(月数==1){
返回“一月”;
}
如果(月数==2){
返回“二月”;
}
}
console.log(response.data)
您可以使用forEach
及其第一个参数:
const data=response.data;
data.forEach(d=>d.monthName=monthNumberToName(d.month));
返回数据;
您可以使用forEach
及其第一个参数:
const data=response.data;
data.forEach(d=>d.monthName=monthNumberToName(d.month));
返回数据;
大大有助于简化代码
您可以这样做:
维护一个月数组:
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];
});
大大有助于简化代码
您可以这样做:
维护一个月数组:
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];
});
也许,你可以试试这个
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)
也许,你可以试试这个
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)
您的循环是错误的实现<代码>数据[ctr]
等于b
ctr
与a
相同<代码>$。每个的语法都是(索引,项)
。你应该直接使用它。您也可以使用Array.map
,但其签名不同。您可以执行response.data.map(函数(obj){obj.monthName=monthNumberToName(b.month);return obj;})
您的代码已经工作了吗?您的循环实现不好<代码>数据[ctr]等于b
ctr
与a
相同<代码>$。每个的语法都是(索引,项)
。你应该直接使用它。您也可以使用Array.map
,但其签名不同。您可以执行response.data.map(函数(obj){obj.monthName=monthNumberToName(b.month);return obj;})
您的代码已经工作了吗?您的monthNumberToName
可以改进很多,这只是一个简单假设的示例代码。OP要求改进分配monthName
而不是monthNumberToName
,因此我将monthNumberToName
作为示例代码。您的monthNumberToName
可以改进很多,这只是一个简单假设的示例代码。OP要求改进分配monthName
而不是monthNumberToName
,因此我将monthNumberToName
作为示例代码。forEach是否返回任何内容?据我所知,如果您使用.map
,则不会进一步减少更新的代码。请记住,有特定于操作的函数。forEach
是否返回任何内容?据我所知,如果您使用.map
,则不会进一步减少更新的代码。请记住,有一些特定于操作的功能。