如何使用JavaScript将此数组映射为新格式

时间:2013-11-06 17:34:27

标签: javascript jquery

我知道JavaScript中有一些函数式编程,我想知道我是否可以创建一个函数,因此使用一些函数方法比仅仅以编程方式编写代码更容易(如下所示,我也有由于某种原因,一些SO格式问题。)

function mapToFormat(var myarray, var colname) {
}

myarray实际上是来自服务器响应的以下json ...

{
   "time": "1",
   "col1": "2",
   "col2": "3",
   "col3": "1"
},
{
   "time": "2",
   "col2": "3"
},
{
   "time": "3",
   "col1": "3"
},
{
   "time": "4",
   "col3": "3"
},
{
   "time": "5",
   "col1": null
}

我想像上面这样调用上面json的函数

mapToFormat(myarray, 'col1')

然后让它像这样返回数据(虽然是数组格式)

{
   "time": "1",
   "col1": "2"
},
{
   "time": "3",
   "col1": "3"
},
{
   "time": "5",
   "col1": "null
}

我想也许我只是用     var newData = [];     $ .each(data,function(index,value){       if(value [colname] not exists){          newData.push({            “时间”:价值['时间'],            colname:value [colname]       }       });     });

但我不知道如何区分“col1”与“col1”之间的区别:null因为我想传递任何通过的空值。

我怎么能做到这一点?我想知道是否有地图功能或我应该使用哪些可能更好?

1 个答案:

答案 0 :(得分:1)

试试这个(小提琴:http://jsfiddle.net/GNr8N/1/):

function mapToFormat(myArray, col) {
 return myArray.map(function(record){
    var result = {
        time: record.time,      
     }
    if (typeof record[col] !== 'undefined') {
     result[col] = record[col]
    }
    return result;
  })
}

!==运算符不进行类型转换,因此如果记录[col]存在,它将被添加,即使它是null。