2017-03-03 5 views
2

Meine json Daten ist wie folgt aus:Convert JSON-Daten zu Array in JavaScript

[{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}, 
{"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"}, 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"2UNHFBCQG0"}, 
{"vehicleType":"car","make":"Volvo","model":"XC90","vin":"J37612ZVEC"}, 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"OB60BC33LF"}, 
{"vehicleType":"car","make":"Volvo","model":"XC90","vin":"DCA3364SGK"}, 
{"vehicleType":"car","make":"Volvo","model":"XC60","vin":"FV2HML056G"}, 
{"vehicleType":"car","make":"BMW","model":"328xi","vin":"IGPP3DQ4SK"}, 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
{"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"}, 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}] 

Jetzt möchte ich meine Array wie folgt in JavaScript sein.

// Javascript array 
var array = []; 
array[// vin number od above json array] = // the whole row of that vin number. 

Zum Beispiel

// Javascript array 
array["R90N8E95UB"][0] 
=[{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}] 
array["R90N8E95UB"][1] 
=[{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}] 

Und so weiter ...

Bitte a Dvice darauf.

Vielen Dank.

Antwort

8

Sie können an der inneren Arrays durchlaufen und drücken.

var data = [{ vehicleType: "car", make: "Dodge", model: "Durango", vin: "R90N8E95UB" }, { vehicleType: "car", make: "Honda", model: "Accord", vin: "XJLSXU6NA5" }, { vehicleType: "car", make: "Dodge", model: "Durango", vin: "2UNHFBCQG0" }, { vehicleType: "car", make: "Volvo", model: "XC90", vin: "J37612ZVEC" }, { vehicleType: "car", make: "Mercedes", model: "C250", vin: "J5QB24CFGS" }, { vehicleType: "car", make: "Dodge", model: "Durango", vin: "OB60BC33LF" }, { vehicleType: "car", make: "Volvo", model: "XC90", vin: "DCA3364SGK" }, { vehicleType: "car", make: "Volvo", model: "XC60", vin: "FV2HML056G" }, { vehicleType: "car", make: "BMW", model: "328xi", vin: "IGPP3DQ4SK" }, { vehicleType: "car", make: "Mercedes", model: "C250", vin: "J5QB24CFGS" }, { vehicleType: "car", make: "Honda", model: "Accord", vin: "XJLSXU6NA5" }, { vehicleType: "car", make: "Mercedes", model: "C250", vin: "J5QB24CFGS" }, { vehicleType: "car", make: "Dodge", model: "Durango", vin: "R90N8E95UB" }], 
 
    result = Object.create(null), 
 
    keys; 
 

 
data.forEach(function (a) { 
 
    result[a.vin] = result[a.vin] || []; 
 
    result[a.vin].push(a); 
 
}); 
 

 
keys = Object.keys(result); 
 

 
console.log(keys); 
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

Hi @Nina, Ich möchte auch alle Schlüssel dieser einzigartigen Vin-Nummer. Kannst du mir bitte gleich helfen? Zum Beispiel, var Tasten = ["R90N8E95UB", "XJLSXU6NA5", "2UNHFBCQG0", ...] –

+0

@ChetanNakum, siehe Bearbeiten. –

+0

Das wäre super @NinaScholz. Vielen Dank für Hilfe. –

2

In ES2015: var arr = Objektwerte (obj);

5

var json = [{vehicleType:"car",make:"Dodge",model:"Durango",vin:"R90N8E95UB"},{vehicleType:"car",make:"Honda",model:"Accord",vin:"XJLSXU6NA5"},{vehicleType:"car",make:"Dodge",model:"Durango",vin:"2UNHFBCQG0"},{vehicleType:"car",make:"Volvo",model:"XC90",vin:"J37612ZVEC"},{vehicleType:"car",make:"Mercedes",model:"C250",vin:"J5QB24CFGS"},{vehicleType:"car",make:"Dodge",model:"Durango",vin:"OB60BC33LF"},{vehicleType:"car",make:"Volvo",model:"XC90",vin:"DCA3364SGK"},{vehicleType:"car",make:"Volvo",model:"XC60",vin:"FV2HML056G"},{vehicleType:"car",make:"BMW",model:"328xi",vin:"IGPP3DQ4SK"},{vehicleType:"car",make:"Mercedes",model:"C250",vin:"J5QB24CFGS"},{vehicleType:"car",make:"Honda",model:"Accord",vin:"XJLSXU6NA5"},{vehicleType:"car",make:"Mercedes",model:"C250",vin:"J5QB24CFGS"},{vehicleType:"car",make:"Dodge",model:"Durango",vin:"R90N8E95UB"}], 
 
    result = []; 
 
    
 
    json.forEach(v => result.push([v.vin, v])); 
 
    console.log(result);

+0

Ich wünschte, du hättest deine Antwort auf "diese andere Frage" heute nicht gelöscht - es war anders und es hat funktioniert - und das hat es wertvoll gemacht. Was das Problem der Drive-by-Downvoters auf SO betrifft, würde ich hinzufügen: Die Abwahl von SO ist ähnlich wie das, was oft über Demokratie gesagt wird - dass es die beste Regierungsform der Welt ist, AUSSER FÜR diesen blöden Teil lass niemanden (nach unten) abstimmen. – crashwap

1

können Sie verwenden Array.reduce

var yourData = [{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}, 
 
{"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"}, 
 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"2UNHFBCQG0"}, 
 
{"vehicleType":"car","make":"Volvo","model":"XC90","vin":"J37612ZVEC"}, 
 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"OB60BC33LF"}, 
 
{"vehicleType":"car","make":"Volvo","model":"XC90","vin":"DCA3364SGK"}, 
 
{"vehicleType":"car","make":"Volvo","model":"XC60","vin":"FV2HML056G"}, 
 
{"vehicleType":"car","make":"BMW","model":"328xi","vin":"IGPP3DQ4SK"}, 
 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
 
{"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"}, 
 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}]; 
 

 

 
var result = yourData.reduce(function (acc,curr) { 
 
    acc[curr.vin]= acc[curr.vin] || []; 
 
    acc[curr.vin].push(curr); 
 
    return acc; 
 
},{}); 
 
console.log(result);

1

versuchen, diese

var data = [{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}, 
     {"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"}, 
     {"vehicleType":"car","make":"Dodge","model":"Durango","vin":"2UNHFBCQG0"}, 
     {"vehicleType":"car","make":"Volvo","model":"XC90","vin":"J37612ZVEC"}, 
     {"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
     {"vehicleType":"car","make":"Dodge","model":"Durango","vin":"OB60BC33LF"}, 
     {"vehicleType":"car","make":"Volvo","model":"XC90","vin":"DCA3364SGK"}, 
     {"vehicleType":"car","make":"Volvo","model":"XC60","vin":"FV2HML056G"}, 
     {"vehicleType":"car","make":"BMW","model":"328xi","vin":"IGPP3DQ4SK"}, 
     {"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
     {"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"}, 
     {"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
     {"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}]; 



     var array = []; 
     for(var k= 0 ,l = data.length;k<l;k++){ 
      array[data[k].vin] = data[k];  
     } 
     console.log(array); 
1

Warum ordnen Sie es nicht einfach etwas zu?

var array = [{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}, 
{"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"}, 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"2UNHFBCQG0"}, 
{"vehicleType":"car","make":"Volvo","model":"XC90","vin":"J37612ZVEC"}, 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"OB60BC33LF"}, 
{"vehicleType":"car","make":"Volvo","model":"XC90","vin":"DCA3364SGK"}, 
{"vehicleType":"car","make":"Volvo","model":"XC60","vin":"FV2HML056G"}, 
{"vehicleType":"car","make":"BMW","model":"328xi","vin":"IGPP3DQ4SK"}, 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
{"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"}, 
{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"}, 
{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}] 

Dann

array[0]: 
Object {vehicleType: "car", make: "Dodge", model: "Durango", vin: "R90N8E95UB"} 

Aber wenn man braucht ein Auto zum Nachschlagen auf der Grundlage ihrer vin, macht die vin den Schlüssel und die Variable muss ein Objekt sein, nicht ein Array.

var object = {"R90N8E95UB": {"vehicleType": "car", make: "Dodge", model: "Durango"}, 
       "J5QB24CFGS": {"vehicleType":"car","make":"Mercedes","model":"C250"}} 
2

this helps:

var arr = {}; 
 
var pop = [{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"},{"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"},{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"2UNHFBCQG0"},{"vehicleType":"car","make":"Volvo","model":"XC90","vin":"J37612ZVEC"},{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"},{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"OB60BC33LF"},{"vehicleType":"car","make":"Volvo","model":"XC90","vin":"DCA3364SGK"},{"vehicleType":"car","make":"Volvo","model":"XC60","vin":"FV2HML056G"},{"vehicleType":"car","make":"BMW","model":"328xi","vin":"IGPP3DQ4SK"},{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"},{"vehicleType":"car","make":"Honda","model":"Accord","vin":"XJLSXU6NA5"},{"vehicleType":"car","make":"Mercedes","model":"C250","vin":"J5QB24CFGS"},{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}]; 
 
pop.forEach(function(item){ 
 
    if (arr[item.vin]) { 
 
    arr[item.vin].push([item]); 
 
    } else { 
 
    arr[item.vin] = [[item]]; 
 
    } 
 
}); 
 
console.log(JSON.stringify(arr["R90N8E95UB"][0])); 
 
console.log(JSON.stringify(arr["R90N8E95UB"][1])); 
 
console.log(JSON.stringify(arr));

0

Wenn Sie ein Objekt den Weg haben Sie gezeigt, ein Array von Object.values ​​bekommen kann()