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,431
  • 2
  • 27
  • 39
Chetan Nakum
  • 413
  • 6
  • 19

9 Answers9

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; }
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
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);
kind user
  • 40,029
  • 7
  • 67
  • 77
  • 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. – crashwap Mar 04 '17 at 19:39
2

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

Anis D
  • 761
  • 11
  • 25
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));
Batman25663
  • 272
  • 1
  • 3
  • 12
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);
Vladu Ionut
  • 8,075
  • 1
  • 19
  • 30
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);
Gerard
  • 66
  • 6
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"}}
Daniel Katz
  • 2,271
  • 3
  • 25
  • 27
0

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

jagdish.narkar
  • 317
  • 1
  • 7
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.

Community
  • 1
  • 1
Walter Palladino
  • 479
  • 1
  • 3
  • 8