2016-07-21 12 views
1

Ich habe folgendes Array von Objekten:Convert Array von Objekten, um verschachtelte Array

[{ 
    "Lines": [{ 
     "Month": 10, 
     "Year": 2017, 
     "CompletionPercentage": 30 
    }] 
}, { 
    "Lines": [{ 
     "Month": 10, 
     "Year": 2017, 
     "CompletionPercentage": 30 
    }, { 
     "Month": 6, 
     "Year": 2017, 
     "CompletionPercentage": 30 
    }, { 
     "Month": 12, 
     "Year": 2017, 
     "CompletionPercentage": 40 
    }] 
}] 

ich jede line Eigenschaft in eine separate JavaScript-Array konvertieren

Line1 muss

sein
[ 
    ["10-2017", 30] 
] 

Line2 muss

[ 
    ["10-2017", 30], 
    ["6-2017", 30], 
    ["12-2017", 30] 
] 
sein

Wie kann ich das erreichen?

Antwort

5

Sie können map() verwenden, um dieses Ergebnis zu erhalten.

var data = [{"Lines":[{"Month":10,"Year":2017,"CompletionPercentage":30}]},{"Lines":[{"Month":10,"Year":2017,"CompletionPercentage":30},{"Month":6,"Year":2017,"CompletionPercentage":30},{"Month":12,"Year":2017,"CompletionPercentage":40}]}] 
 

 
var result = data.map(function(e) { 
 
    return e.Lines.map(function(a) { 
 
    return [a.Month + '-' + a.Year, a.CompletionPercentage]; 
 
    }) 
 
}) 
 

 
console.log(result);

+0

Es separate Arrays für jede Zeile zurückgibt, wie Sie in der Konsole sehen https://jsfiddle.net/ Lg0wyt9u/1062/ –

+0

Es gibt 2 Arrays zurück das erste Array ist immer 0 Länge und das zweite hat 4 Elemente, ich brauche das fi Das erste Array muss ein Element haben und das zweite muss 3 –

+0

haben Bitte werfen Sie einen Blick auf diese https://jsfiddle.net/Lg0wyt9u/1063/ –

2

könnten Sie verschachtelte Array#map verwenden und alle in einem Array zurück.

var array = [{ "Lines": [{ "Month": 10, "Year": 2017, "CompletionPercentage": 30 }] }, { "Lines": [{ "Month": 10, "Year": 2017, "CompletionPercentage": 30 }, { "Month": 6, "Year": 2017, "CompletionPercentage": 30 }, { "Month": 12, "Year": 2017, "CompletionPercentage": 40 }] }], 
 
    result = array.map(function (a) { 
 
     return a.Lines.map(function (b) { 
 
      return [b.Month + '-' + b.Year, b.CompletionPercentage]; 
 
     }); 
 
    }); 
 

 
console.log(result);

0
function objToArray($obj, &$arr){ 

if(!is_object($obj) && !is_array($obj)){ 
    $arr = $obj; 
    return $arr; 
} 

foreach ($obj as $key => $value) 
{ 
    if (!empty($value)) 
    { 
     $arr[$key] = array(); 
     objToArray($value, $arr[$key]); 
    } 
    else 
    { 
     $arr[$key] = $value; 
    } 
} 
return $arr;} 
0

Bitte überprüfen https://jsfiddle.net/1qx6xqv4/

Sie Array.map(function(data){}) verschachtelt verwenden können, dies zu tun:

var data = [{"Lines":[{"Month":10,"Year":2017,"CompletionPercentage":30}]}, {"Lines":[{"Month":10,"Year":2017,"CompletionPercentage":30}, {"Month":6,"Year":2017,"CompletionPercentage":30}, {"Month":12,"Year":2017,"CompletionPercentage":40}]}]; 

var array = data.map(function (ls){ 
    return ls.Lines.map(function(line){ 
     return [line.Month + '-' + line.Year, line.CompletionPercentage]; 
}) 
}) 
console.log(array); 
0
var abcd = [{"Lines":[{"Month":10,"Year":2017,"CompletionPercentage":30}]},{"Lines":[{"Month":10,"Year":2017,"CompletionPercentage":30},{"Month":6,"Year":2017,"CompletionPercentage":30},{"Month":12,"Year":2017,"CompletionPercentage":40}]}] 
var array = []; 
var secondArray = []; 
var innerArray = []; 
$.each(abcd,function(i,data){ 
secondArray = []; 

$.each(data,function(j,lineData){ 

$.each(lineData,function(k,innerData){ 
innerArray = []; 

innerArray.push(innerData.Month+'-'+innerData.Year,innerData.CompletionPercentage); 
secondArray.push(innerArray) 
}) 
array.push(secondArray) 
}); 

}) 
0

Eine ES6 Antwort

const a = [{ 
 
    "Lines": [ 
 
     {"Month": 10, "Year": 2017, "CompletionPercentage": 30}] 
 
}, { 
 
    "Lines": [{ 
 
     "Month": 10, 
 
     "Year": 2017, 
 
     "CompletionPercentage": 30 
 
    }, {"Month": 6, "Year": 2017, "CompletionPercentage": 30}, {"Month": 12, "Year": 2017, "CompletionPercentage": 40}] 
 
}] 
 
    
 
const r = a.map(e => e["Lines"]).map(e => e.map(e2=>[`${e2.Month}-${e2.Year}`,e2.CompletionPercentage])) 
 
console.log(r)

0

var lines = [{ "Lines": [{ "Month": 10, "Year": 2017, "CompletionPercentage": 30 }] }, { "Lines": [{ "Month": 10, "Year": 2017, "CompletionPercentage": 30 }, { "Month": 6, "Year": 2017, "CompletionPercentage": 30 }, { "Month": 12, "Year": 2017, "CompletionPercentage": 40 }] }]; 
 
var result = []; 
 

 
for (i = 0; i < lines.length; i++) { 
 
    for (j = 0; j < lines[i].Lines.length; j++) { 
 
     result.push([lines[i].Lines[j].Month + '-' + lines[i].Lines[j].Year, lines[i].Lines[j].CompletionPercentage]); 
 
    } 
 
} 
 
console.log(result);

0
var object = [{ "Lines": [{ "Month": 10, "Year": 2017, "CompletionPercentage": 30 }] }, { "Lines": [{ "Month": 10, "Year": 2017, "CompletionPercentage": 30 }, { "Month": 6, "Year": 2017, "CompletionPercentage": 30 }, { "Month": 12, "Year": 2017, "CompletionPercentage": 40 }] }]; 

var outerArray = [] 
for(i=0;i<object.length;i++){ 
    var objs = object[i].Lines; 
    var innerArr = []; 
    for (j=0;j<objs.length;j++){ 
     var innerObj = objs[j]; 
     var month = innerObj.Month; 
     var year = innerObj.Year; 
     var CompletionPercentage = innerObj.CompletionPercentage; 

     innerArr.push([month+"-"+year,CompletionPercentage]); 
} 
outerArray.push(innerArr); 
} 

console.log(outerArray); 
JSON.stringify(outerArray);