1

我知道在 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 exist) { newData.push({ "time": value['time'], colname : value[colname] } }); } );

但我不确定如何区分“col1”不存在和“col1”:null,因为我想通过任何通过的空值。

我怎样才能做到这一点?我想知道是否有地图功能或我应该使用的东西可能会更好?

4

1 回答 1

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;
  })
}

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

于 2013-11-06T17:38:39.387 回答