如果找到状态,我正在映射。功能似乎工作正常但有更短的方式或替代方式吗?
例如:
data = {
Items: [
{Id: 434, Status: "Processing"},
{Id: 223, Status: "Completed"}
]
}
mapperData = {
Id: 223,
Name: "Hello World",
Status: data.Items.filter(function(item) {
if (item.Id == 223) {
return item.Status
}
})[0].Status,
}
console.log(mapperData)
退回:
{Id:223,姓名:“Hello World”,状态:“已完成”}
答案 0 :(得分:6)
[0]
E.g:
Status: data.Items.find(function(item) { return item.Id == 223; }).Status
使用ES2015 +箭头功能更好:
mapperData = {
Id: 223,
Name: "Hello World",
Status: data.Items.find(function(item) { return item.Id == 223; }).Status,
}
ES2015中添加了 mapperData = {
Id: 223,
Name: "Hello World",
Status: data.Items.find(item => item.Id == 223).Status,
}
,但可以轻松填充IE11等过时环境。
答案 1 :(得分:0)
您可以选择在forEach
数组上使用Items
循环,并将id
设置为在变量中进行比较:
var data = {
Items: [
{Id: 434, Status: "Processing"},
{Id: 223, Status: "Completed"}
]
}
var res = {};
var id = 223;
data.Items.forEach((item)=>{
res.Id = id;
res.Name = "Hello World";
if (item.Id == id) {
res.Status = item.Status
}
});
console.log(res)