反正在数据映射中是否有if语句?

时间:2017-07-23 21:33:05

标签: javascript json

这是我的代码:

if args['database'] == "mnist":
    print('Hello!')

我似乎无法在数据映射中添加if语句,上面是我要实现的目标示例。我尝试用 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) } })) }) ); 进行测试,它似乎不允许在数据映射中包含代码。虽然我发现这个stackoverflow做了类似的事情。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

地图需要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语句结束了地图中的当前迭代。

答案 1 :(得分:1)

您可以使用带有new Date()构造函数的条件运算符来传递nested.updatedAtnested.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)
                }) 
              )
    })
  );

答案 2 :(得分:0)

传递给.map的参数是itemcountarray

所以你可以......

item.prices.map((nested,count,array) => {
    if ( count ==  arr.length - 1 ) { /* last one */ 
        // do something for last one
    } else {
        // not last one
    } 
});