我对如何使用$ .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个子数组,所以结果应该是三个子数组,每个子数组包含四个元素。
我应该能够使用$.each
等,但目的是学习$ .map。
更新 我的猜测是纯$ .map解决方案就像是 嵌套地图:
_elements = $.map(_elements, function(e) {
return [$.map(e,function(v) {
return v;
})];
});
答案 0 :(得分: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] }));
这构建了你要求的数组。