My json data is like that:
[{"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"}]
Now I want my array to be like this in JavaScript:
// Javascript array
var array = [];
array[// vin number od above json array] = // the whole row of that vin number.
For example.,
// Javascript array
array["R90N8E95UB"][0]
=[{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}]
array["R90N8E95UB"][1]
=[{"vehicleType":"car","make":"Dodge","model":"Durango","vin":"R90N8E95UB"}]
And so on...
Please advice on it.
Thank you.
9 Answers 9
You could iterate and push to the inner array.
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; }
2 Comments
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);
1 Comment
In ES2015: var arr = Object.values(obj);
Comments
Hope 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));
Comments
You can use 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);
Comments
try this
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);
Comments
Why don't you simply assign it to something?
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"}]
Then
array[0]:
Object {vehicleType: "car", make: "Dodge", model: "Durango", vin: "R90N8E95UB"}
But if you need to lookup a car based on their vin, make the vin the key and the variable needs to be an object, not an array.
var object = {"R90N8E95UB": {"vehicleType": "car", make: "Dodge", model: "Durango"},
"J5QB24CFGS": {"vehicleType":"car","make":"Mercedes","model":"C250"}}
Comments
If you have an object the way you showed, you can get an array by Object.values()
Comments
Your JSON data IS already an array. One way to get the data can be found at Get JavaScript object from array of objects by value or property There you can found a way to query your JSON Array.