我有这个数组,
var arr1 = [19, 1, 1, 1, 1];
和另一个数组,
var arr2 = ["Default", "Dynamic", "Assessment", "Risk", "Privacy"];
我想要的是以某种方式合并它们,使它看起来像这样,
var merged_array = [ ["Default", 19], ["Dynamic", 1], ["Assessment", 1], ["Risk", 3], ["Privacy", 2] ];
我该怎么做?我试过join
但我没有达到我想要的效果。提前谢谢!
答案 0 :(得分:1)
如果你有jquery或等价物:
var merged_array = $.map(arr1, function(e, i) {
return [arr2[i], e];
});
如果没有,那么只需使用for
循环,同样的想法。
var merged_array = []
for (var i = 0; i < arr1.length && i < arr2.length; i++) {
merged_array[i] = [arr2[i], arr1[i]];
}
答案 1 :(得分:1)
var result = new Array();
for (var i=0; i<arr1 .length && i<arr2.length ; i++) {
result[i] = new Array();
result[i][0] = arr1[i];
result[i][1] = arr2[i];
}
答案 2 :(得分:1)
使用for循环:
var merged_array = new Array(arr1.length);
for (var i = 0; i < arr1.length; i++) {
merged_array[i] = new Array(arr2[i], arr1[i]);
}
这假定arr1和arr2具有相同的长度。
答案 3 :(得分:1)
我可能会扩展array
对象,特别是如果这是一项常见任务。像这样:
Array.prototype.myMerge = function(arr){
var returnArr = [];
for(var i = 0, len = this.length; i < len; i++){
returnArr[i] = [this[i], arr[i]];
}
return returnArr;
};
然后你可以这样称呼它:
var merged_array = arr1.myMerge(arr2)
当然,您必须添加一些错误检查数组的长度,此函数假定arr1的长度与arr2相同或更长。但这取决于你想要做什么,如果arr1和arr2是不同的长度,你的问题似乎假设它们是相同的长度。
答案 4 :(得分:1)
如果包含库underscore.js(prototype.js也有类似的东西),可以使用_.zip(array1,array2)。它们提供了3个数组的示例用法。
来自http://underscorejs.org/#zip:
zip_.zip(*阵列) 将每个数组的值与相应位置的值合并在一起。当您具有通过匹配数组索引协调的单独数据源时很有用。如果您正在使用嵌套数组矩阵,zip.apply可以以类似的方式转置矩阵。
_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]);
=> [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]