下面是我的代码:
let datasets = data.map(
item => ({
"label": item.name,
"data": item.prices.map(nested => ({
if( /* Last row */ ){
"x": new Date(nested.updatedAt),
"y": Number(nested.price)
} else {
"x": new Date(nested.createdAt),
"y": Number(nested.price)
}
}))
})
);我似乎根本不能将if语句添加到数据映射中,上面就是我要实现的一个示例。我尝试为测试做一个console.log,它似乎不允许在数据映射中包含代码。尽管我发现这个stackoverflow在做类似的事情。有什么建议吗?
发布于 2017-07-24 05:42:09
映射需要一条return语句。因此,做这样的事情是完全有效的:
let datasets = data.map((item) => {
var obj = {};
obj.label = item.name
obj.data = item.prices.map((subItem, key) => {
if (item.prices.length === key + 1) {
return {x: new Date(subItem.updateAt), y: Number(subItem.price)};
}
return {x: new Date(subItem.createdAt), y: Number(subItem.price)}
})
return obj;
})return语句结束映射中的当前迭代。
发布于 2017-07-24 05:41:57
您可以通过new Date()构造函数使用条件运算符来传递nested.updatedAt或nested.createdAt
let datasets = data.map(
item => ({
"label": item.name,
"data": item.prices.map(nested =>
({
"x": new Date(lastrow ? nested.updatedAt : nested.createdAt),
"y": Number(nested.price)
})
)
})
);发布于 2017-07-24 05:40:24
传递给.map的参数是item、count、array
所以你可以拥有..。
item.prices.map((nested,count,array) => {
if ( count == arr.length - 1 ) { /* last one */
// do something for last one
} else {
// not last one
}
});https://stackoverflow.com/questions/45270090
复制相似问题