2017-04-19 86 views
0

我在創建數組到數組的函數上工作。在循環中創建一個變量「for」

我有這樣一個JSON:

[ 
    [ 
     {"data_name":"dn1","defaut_name":"1F-27","occurrence":5}, 
     {"data_name":"dn1","defaut_name":"20-34","occurrence":1} 
    ],[ 
     {"data_name":"bm1","defaut_name":"13-02","occurrence":4} 
    ],[ 
     {"data_name":"dn2","defaut_name":"1F-27","occurrence":3}, 
     {"data_name":"dn2","defaut_name":"20-34","occurrence":1} 
    ],[ 
     {"data_name":"bm2","defaut_name":"13-02","occurrence":4} 
    ],[ 
     {"data_name":"bm3","defaut_name":"13-02","occurrence":3} 
    ],[ 
     {"data_name":"bm4","defaut_name":"13-02","occurrence":3} 
    ] 
] 

而且我想這樣的結果:

[ 
    [5,4,3,4,3,3], 
    [1,0,1,0,0,0] 
] 

這相當於事件的串聯。

我嘗試了一個循環,但它不起作用。

var data = []; 
for (var i in chartData) { 
    var array = []; 
    for (var j in chartData[i]) { 
     array.push(chartData[i][j].occurrence) 
    } 
    data.push(array); 
} 

感謝您的幫助。

+4

「但它不起作用」是什麼意思? – Carcigenicate

+0

過濾器和減速器的完美用例。 –

+0

你已經有[[5,1],[4],[3,1],...]了,只要將它轉換成你想要的樣子。 –

回答

0

你可以簡單地使用結果,你必須使你正在尋找的輸出:

var chartData = [ 
 
    [ 
 
     {"data_name":"dn1","defaut_name":"1F-27","occurrence":5}, 
 
     {"data_name":"dn1","defaut_name":"20-34","occurrence":1} 
 
    ],[ 
 
     {"data_name":"bm1","defaut_name":"13-02","occurrence":4} 
 
    ],[ 
 
     {"data_name":"dn2","defaut_name":"1F-27","occurrence":3}, 
 
     {"data_name":"dn2","defaut_name":"20-34","occurrence":1} 
 
    ],[ 
 
     {"data_name":"bm2","defaut_name":"13-02","occurrence":4} 
 
    ],[ 
 
     {"data_name":"bm3","defaut_name":"13-02","occurrence":3} 
 
    ],[ 
 
     {"data_name":"bm4","defaut_name":"13-02","occurrence":3} 
 
    ] 
 
]; 
 

 
var data = []; 
 
for (var i in chartData) { 
 
    var array = []; 
 
    for (var j in chartData[i]) { 
 
     array.push(chartData[i][j].occurrence) 
 
    } 
 
    data.push(array); 
 
} 
 

 
var newData = [ [], [] ]; 
 
for (var i in data) { 
 
    newData[0].push(data[i][0]); 
 
    newData[1].push(data[i][1] || 0); 
 
} 
 

 
console.log(newData);

0

這應該做的伎倆。

let arr = [ 
    [ 
     {"data_name":"dn1","defaut_name":"1F-27","occurrence":5}, 
     {"data_name":"dn1","defaut_name":"20-34","occurrence":1} 
    ],[ 
     {"data_name":"bm1","defaut_name":"13-02","occurrence":4} 
    ],[ 
     {"data_name":"dn2","defaut_name":"1F-27","occurrence":3}, 
     {"data_name":"dn2","defaut_name":"20-34","occurrence":1} 
    ],[ 
     {"data_name":"bm2","defaut_name":"13-02","occurrence":4} 
    ],[ 
     {"data_name":"bm3","defaut_name":"13-02","occurrence":3} 
    ],[ 
     {"data_name":"bm4","defaut_name":"13-02","occurrence":3} 
    ] 
] 

/* this could be done more elegantly */ 
let l1 = arr.map((t) => t[0]!==undefined ? t[0]["occurrence"]:0); 
let l2 = arr.map((t) => t[1]!==undefined ? t[1]["occurrence"]:0); 

let result = [l1,l2]; 
0

您可以嘗試使用map功能將輸入轉化爲所需輸出。

var obj =[ 
 
    [ 
 
     {"data_name":"dn1","defaut_name":"1F-27","occurrence":5}, 
 
     {"data_name":"dn1","defaut_name":"20-34","occurrence":1} 
 
    ],[ 
 
     {"data_name":"bm1","defaut_name":"13-02","occurrence":4} 
 
    ],[ 
 
     {"data_name":"dn2","defaut_name":"1F-27","occurrence":3}, 
 
     {"data_name":"dn2","defaut_name":"20-34","occurrence":1} 
 
    ],[ 
 
     {"data_name":"bm2","defaut_name":"13-02","occurrence":4} 
 
    ],[ 
 
     {"data_name":"bm3","defaut_name":"13-02","occurrence":3} 
 
    ],[ 
 
     {"data_name":"bm4","defaut_name":"13-02","occurrence":3} 
 
    ] 
 
]; 
 

 
var result1 = obj.map(x=>x[0].occurrence); 
 
var result2 = obj.map(x => x[1] ? x[1].occurrence : 0);       
 

 
var result = [result1 , result2]; 
 
console.log(result);

0

JavaScript不支持真正的多維數組,但您可以用數組的數組接近他們。要訪問數組數組中的值,只需使用[]運算符兩次。

// Created a multinational array 
var table = new Array(10); 
for(var i = 0; i < table.length; i++) 
     table[i] = new Array(10); 

// Initialize the array 
for(var row = 0; row < table.length; row++){ 
    for(col = 0; col < table[row].length; col++){ 
     table [row][col] = row*col; 
    } 
} 

// Use the multidimensional array to compute 2*5 
var product = table [2][5]; // 10