jQuery map不能与json数组一起工作


jQuery map does not work with json array

我有一个$。post jQuery调用,调用php文件。然后,该文件返回一个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"}]

执行.map()的数组需要是一个jquery对象。如果你设置的结果数据等于一个jquery数组与$贴在它应该能够使用jquery地图实用程序。您也可以使用$.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/

.map()的签名为:

jQuery。Map (array, callback)

那么,你可以试试:

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

小提琴来了