jQuery映射不适用于json数组

时间:2015-07-11 19:44:30

标签: javascript php jquery arrays json

我有一个调用php文件的$ .post jQuery调用。然后该文件返回JSON编码的数组。然后,映射数组以编辑数组中的一些数据。但是,我收到错误arr.map is not function

这是在$ .post调用中传递的数组。

[{"set":"Alpha","key":"256"},
{"set":"Omega","key":"671"},
{"set":"Theta","key":"762"},
{"set":"Beta","key":"462"}]

这是地图功能。

idHash = {'Alpha': '1', 'Beta': '2', 'Theta': '3', 'Omega': '4'};
var arr = arr.map(function(item){
    item.set = idHash[item.set]
    return item;
})

在map函数之后,数组应该如下所示。

[{"set":"1","key":"256"},
{"set":"4","key":"671"},
{"set":"3","key":"762"},
{"set":"2","key":"462"}]

2 个答案:

答案 0 :(得分:8)

您正在执行的数组.map()需要是一个jquery对象。如果将结果数据设置为等于附加$的jquery数组,则应该能够使用jquery map实用程序。您也可以使用$.map(array, function(item){});

https://jsfiddle.net/62v2a0cw/1/

idHash = {'Alpha': '1', 'Beta': '2', 'Theta': '3', 'Omega': '4'};

var arr = $.map(idHash, function(item){
    item.set = idHash[item.set];
    console.log(item);
    return item;
});

请参阅jsFiddle链接。如果有帮助,请告诉我。这只是为了协助.map()。如果要创建JSON对象数组,可以使用jQuery .each()并将每个键值对相应地推送到数组。您可以根据需要使用每次迭代的值来操作。根据您的评论,假设您使用的idHash标识的JSON等于{'Alpha': '1', 'Beta': '2', 'Theta': '3', 'Omega': '4'}

arr = [];
idHash = {'Alpha': '1', 'Beta': '2', 'Theta': '3', 'Omega': '4'};

$.each(idHash, function(key, value){
    // do whatever with the value before setting
    value *= 15;
    arr.push({"set": key, "key": value });
});    
console.log(arr);

https://jsfiddle.net/62v2a0cw/2/

如果有效,请告诉我。

答案 1 :(得分:0)

.map()的签名是:

  

jQuery.map(数组,回调)

所以,你可以试试这个:

var data = [{"set":"Alpha","key":"256"},
{"set":"Omega","key":"671"},
{"set":"Theta","key":"762"},
{"set":"Beta","key":"462"}];

$.map(data, function(elem){
    elem.set = newValue;
    elem.key = newValue;
});

这是fiddle