1

我对如何使用 $.map 函数而不是常规函数感到困惑$.each。我有这样的json数据。

var arr = {
 "x1" :[11,22,33],
 "y1":[44,55,66],
 "y2":[77,88,99]
};

结果应该是 array = [[x1,y1,y2], ...]

var result = [[11,44,77],[22,55,88],[33,66,99]];

而且我希望函数是动态的,它不应该依赖于 arr.x1 等。例如,如果我给它像这样的数组

var arr2 = {
 "aaa" :[11,22,33],
 "sss":[44,55,66],
 "dd":[77,88,99],
 "dddd":[77,88,99],
};

它应该像上面那样动态地添加所有数组,因为它现在有 4 个子数组,所以结果应该是三个子数组,每个子数组有四个元素。我应该可以用$.eachetc 来做,但目的是学习 $.map。

更新: 我的猜测是纯 $.map 解决方案将类似于嵌套地图:

_elements = $.map(_elements, function(e) {
    return [$.map(e,function(v) {
        return v;
    })];
}); 
4

1 回答 1

3

你可以像这样构建你的数组:

var arr = {
 "x1" :[11,22,33],
 "y1":[44,55,66],
 "y2":[77,88,99]
};
var keys = Object.keys(arr), result = [], l=arr[keys[0]].length;
for(var i=0; i<l; i++) result.push($.map(keys, function(k){ return arr[k][i] }));

这完全构建了您要求的数组。

示范

于 2013-10-04T16:01:39.407 回答