2017-04-19 89 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