2017-03-03 163 views
2

我的JSON數據是這樣的:轉換JSON數據陣列中的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"}] 

現在,我想我的數組是這樣在JavaScript:

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

例如,

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

依此類推...

請a設備上。

謝謝。

回答

8

你可以重複和推到內部陣列。

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, 我也想要那個獨特的vin編號的所有關鍵。 你能幫我一樣嗎? 例如,var keys = [「R90N8E95UB」,「XJLSXU6NA5」,「2UNHFBCQG0」,...] –

+0

@ChetanNakum,請參閱編輯。 –

+0

這會很棒@NinaScholz。 非常感謝您的幫助。 –

2

在ES2015中: var arr = Object.values(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

我希望你今天沒有刪除你對「另一個問題」的答案 - 這是不同的,它的工作 - 這使得它很有價值。至於在SO上驅動的downvoters的問題,我想補充一點:對SO的下調與很多人對民主的說法很相似 - 它是世界上最好的政府形式,除了那個愚蠢的部分讓任何人(下)投票。 – crashwap

1

您可以使用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

試試這個

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

你爲什麼不簡單地把它分配給什麼?

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"}] 

然後

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

但是如果你需要查找一輛車根據自己的VIN,使VIN密鑰和變量需要是一個對象,而不是一個數組。

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

希望這有助於:

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

如果你有一個對象,你表現的方式,你可以得到由Object.values數組()