【问题标题】:how to transpose 2d array using javascript [duplicate]如何使用javascript转置二维数组[重复]
【发布时间】:2020-12-23 23:53:10
【问题描述】:

我有一个包含以下数据的数组,我正在使用 javascript 来处理数据

Portfolio, Value
["SFT_DEA_LXD", 17841.17]
["SFT_DEA_LXD", 69373.28]
["SFT_DEA_LXD", 28279.65]
["SFT_ISA_LXD", 10082.31]

我运行了以下代码来汇总价值并按投资组合分组

    function groupBy(array, groups, value) {
    var result = [],
        hash = Object.create(null);

    array.forEach(function (a) {
        var keys = groups.map(function (i) { return a[i] }),
            key = keys.join('|');
        if (!hash[key]) {
            hash[key] = keys.concat(0);
            result.push(hash[key]);
        }
        hash[key][hash[key].length - 1] += +a[value];
    });
    return result;
}

result = groupBy(testArray, [0], 1);

testArray 是

["SFT_DEA_LXD", 115494.1]
["SFT_ISA_LXD", 10082.31]

我需要将数据转置为以下格式

["SFT_DEA_LXD", "SFT_ISA_LXD"]
[115494.1, 10082.31]

您能否建议我如何将数组更改为上述格式以将数据传递到 highcharts,谢谢。

非常感谢您的帮助

科林

【问题讨论】:

标签: javascript arrays


【解决方案1】:
const testArray = [["SFT_DEA_LXD", 115494.1],
["SFT_ISA_LXD", 10082.31]];

const newArray = [];
const newArray1 = [];
testArray.forEach(item => {
    newArray.push(item[0]);
    newArray1.push(item[1]); 
});
const result = [newArray, newArray1];

【讨论】:

  • 嗨 Nitzy 我已将上述代码集成到我的系统中,它完全符合我的要求,现在所有工作都在 highcharts 生成分组数据。最好的问候科林
【解决方案2】:

我不明白你到底想做什么,但转置array 非常简单,你可以像这样使用functionscript 来完成

let transpose = function(arr){
  let m = arr.length;
  let n = arr[0].length;
  let f = [];
  let t = [];
  for (let j=0;j<n; j++){
    t = [];
    for (let i=0;i<m; i++){
      t.push(arr[i][j]);
    }
    f.push(t);
  }
  return f;
} 

let a = [["test1",125.1] , ["test2",542.2],["test3",2.2]];
let b = transpose(a);
console.log(a);
console.log(b);

【讨论】:

  • 嗨 Sobhan 非常感谢您的回复,我稍后会测试代码。最好的问候科林
【解决方案3】:
const portfolios = testData.map(([portfolio]) => portfolio);
const values = testData.map(([, value]) => value);

就这么简单。

'use strict';

const testData = [
    ["SFT_DEA_LXD", 115494.1],
    ["SFT_ISA_LXD", 10082.31]
];

const portfolios = testData.map(([portfolio]) => portfolio);
const values = testData.map(([, value]) => value);

console.log(portfolios); [ 'SFT_DEA_LXD', 'SFT_ISA_LXD' ]
console.log(values); [ 115494.1, 10082.31 ]

【讨论】:

    猜你喜欢
    • 2013-01-27
    • 2013-01-08
    • 1970-01-01
    • 2013-06-29
    • 2019-04-28
    • 2013-12-04
    相关资源
    最近更新 更多