在JS中转换数组

时间:2017-04-08 07:22:01

标签: javascript php

请帮助。

如何在JS中转换这些数组:

$ar1 = array('Shop 1', 15, 25, 30);
$ar2 = array('Shop 2', 25, 45, 50);
$ar3 = array('Month', 1, 2, 3);

到此:

$values = array(
   array('Month', 'Shop 1', 'Shop 2'),
   array('1', 15, 25),
   array('2', 25, 45),
   array('3', 30, 50),
);
在PHP中

我可以这样做:

$result = array_map(function($a,$b,$c){ return [$a,$b,$c]; }, $ar3,$ar1,$ar2);

或者那样:

function flip($arr) {
$result = array();
foreach ($arr as $index => $list) {
    foreach ($list as $key => $value) {
        $result[$key][$index] = $value;
    }
}
return $result;
}

$values = flip([$ar3, $ar1, $ar2]);

3 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:



var arr1 = ['Shop 1', 15, 25, 30];
var arr2 = ['Shop 2', 25, 45, 50];
var arr3 = ['Month', 1, 2, 3];

var res = [];
Object.keys(arr3)
      .forEach(function(key){
          res.push([arr3[key].toString(), arr1[key], arr2[key]]); 
});

console.log(res);




答案 1 :(得分:0)

使用适当的数组,您可以使用嵌套循环转换单个数组。



var array1 = ['Shop 1', 15, 25, 30],
    array2 = ['Shop 2', 25, 45, 50],
    array3 = ['Month', 1, 2, 3],
    result = [array3, array1, array2].reduce(function (r, a, i) {
        a.forEach(function (b, j) {
            r[j] = r[j] || [];
            r[j][i] = b;
        });
        return r;
    }, []);

console.log(result)

.as-console-wrapper { max-height: 100% !important; top: 0; }




答案 2 :(得分:0)

您可以在Javascript中使用Array.prototype.map。它将数组索引作为参数传递给回调,然后您可以使用它来访问其他两个数组。



var arr1 = ['Shop 1', 15, 25, 30];
var arr2 = ['Shop 2', 25, 45, 50];
var arr3 = ['Month', 1, 2, 3];

var result = arr3.map(function(element, index) {
  return [element, arr1[index], arr2[index]];
});

console.log(result);