2

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.

Allen
4,8793 gold badges31 silver badges44 bronze badges
asked Mar 3, 2017 at 13:15
0

9 Answers 9

8

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; }

answered Mar 3, 2017 at 13:19
Sign up to request clarification or add additional context in comments.

2 Comments

Hi @Nina, I also want all key of that unique vin number. Can you please help me for the same? For ex., var keys = ["R90N8E95UB","XJLSXU6NA5","2UNHFBCQG0",...]
That would be awesome @NinaScholz. Thank you so much for help.
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);

answered Mar 3, 2017 at 13:19

1 Comment

I wish you hadn't deleted your answer to "that other question" today - it was different and it worked -- and that made it valuable. As for the problem of drive-by downvoters on SO, I was going to add this: Downvoting on SO is a lot like what is often said about Democracy - that it is the best form of government in the world EXCEPT FOR that stupid part about letting just anyone (down)vote.
2

In ES2015: var arr = Object.values(obj);

answered Mar 3, 2017 at 13:19

Comments

2

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));

answered Mar 3, 2017 at 13:40

Comments

1

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);

answered Mar 3, 2017 at 13:23

Comments

1

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);
answered Mar 3, 2017 at 13:24

Comments

1

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"}}
answered Mar 3, 2017 at 13:27

Comments

0

If you have an object the way you showed, you can get an array by Object.values()

answered Mar 3, 2017 at 14:00

Comments

0

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.

answered Mar 8, 2017 at 11:52

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.