簡體   English   中英

構建Javascript數組數據

[英]Structuring Javascript Array Data

希望我能在這里得到一些幫助。

我有一個看起來像這樣的javascript數組:

var stages = ['Stage 1', 'Stage 1', 'Stage 2', 'Stage 3', 'Stage 1'];
var stageValues = [10, 20, 10, 30, 50];

我想要實現的是獲取上述數據並將其轉換為如下形式:

Stage 1: 10, 20, 50
Stage 2: 10
Stage 3: 30

有點困惑如何做到這一點...任何想法,將不勝感激。

謝謝。

這是一個可能的解決方案。 該函數返回一個對象鍵/值,其中每個鍵是第一個數組的元素,而值是由第二個數組的相應元素組成的數組。

function joint_arrays(arr1,arr2) {  
  toR = {};
  if (arr1.length===arr2.length){    
    for (var i=0;i<arr1.length;i++) {
      if (arr1[i] in toR) {
        toR[arr1[i]].push(arr2[i]);
      }
      else {
        toR[arr1[i]] = [arr2[i]];
      }
    }
  }
  return toR;  
}

例如:

var res= joint_arrays(stages,stageValues);
console.log(res);

退貨

[object Object] {
  Stage 1: [10, 20, 50],
  Stage 2: [10],
  Stage 3: [30]
}

您可以遍歷兩個數組並將其分組。 但是,使用下划線或lodash之類的某些庫的功能性方法會更加容易

var stages = ['Stage 1', 'Stage 1', 'Stage 2', 'Stage 3', 'Stage 1'];
var stageValues = [10, 20, 10, 30, 50];

var grouped = _.groupBy(stageValues, function (elem, index) {
    return stages[index];
});

使用Array.prototype.reduce的解決方案:

 var stages = ['Stage 1', 'Stage 1', 'Stage 2', 'Stage 3', 'Stage 1'], stageValues = [10, 20, 10, 30, 50], obj = stages.reduce(function (r, a, i) { r[a] = r[a] || []; i in stageValues && r[a].push(stageValues[i]); return r; }, {}); document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>'); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM