Javascript 数据映射中是否有if语句?
这是我的密码:Javascript 数据映射中是否有if语句?,javascript,json,Javascript,Json,这是我的密码: 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 {
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
测试,它似乎不允许数据映射中包含代码。虽然我发现它也在做类似的事情。有什么建议吗?传递给.map的参数有项
,计数
,数组
所以你可以
item.prices.map((nested,count,array) => {
if ( count == arr.length - 1 ) { /* last one */
// do something for last one
} else {
// not last one
}
});
传递给.map的参数有
项
,计数
,数组
所以你可以
item.prices.map((nested,count,array) => {
if ( count == arr.length - 1 ) { /* last one */
// do something for last one
} else {
// not last one
}
});
您可以使用带有
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)
})
)
})
);
您可以使用带有
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)
})
)
})
);
映射需要
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语句结束映射中的当前迭代。映射需要
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语句结束了映射中的当前迭代。似乎我根本无法在映射中使用if语句,例如,对于该示例,我得到了
意外标记==
。不知道为什么您的环境支持ES6?,请尝试item.prices.map(函数(嵌套){if(){}})
。其他的回答是正确的,因为你需要返回对象。即return{thing:true}
似乎我根本无法在映射内使用if语句,例如,对于该示例,我得到了Unexpected token==
。不知道为什么您的环境支持ES6?,请尝试item.prices.map(函数(嵌套){if(){}})
。其他的回答是正确的,因为你需要返回对象。即<代码>返回{thing:true}什么是“最后一行”?很抱歉没有澄清,最后一行占位符文本表示我要使用nested.updatedAt
而不是nested.createdAt
。由于它不像for循环,我正在努力获取该值以进行内部检查,因此我现在正在阅读所有响应。更改nested.updatedAt
或nested.createdAt
的选项只有一个。您可以使用条件运算符传递new Date()
constructor中的任意一个值“最后一行”是什么?很抱歉,这里的最后一行占位符文本表示我要使用nested.updatedAt
和notnested.createdAt
。由于它不像for循环,我正在努力获取该值以进行内部检查,因此我现在正在阅读所有响应。更改nested.updatedAt
或nested.createdAt
的选项只有一个。您可以使用条件运算符传递new Date()
constructor中的任意一个值。这很完美,您知道在这种情况下我是否也可以同时返回两个对象吗?我一直想这么做,但我坚持加倍nesting@MilesCollier可以嵌套多少个贴图,但每个贴图只能返回一个对象。如果您想并行执行两个映射,可以查看async.js parallel(),这很完美,您知道在这个场景中我是否也可以同时返回两个对象吗?我一直想这么做,但我坚持加倍nesting@MilesCollier可以嵌套多少个贴图,但每个贴图只能返回一个对象。如果要并行执行两个映射,可以查看async.js parallel()