2015-05-08 11 views
11

Ich habe ein Array von Daten. In a gibt es 10 Felder und in b gibt es 10 FelderVerschmelzen zwei Arrays in ein Json-Objekt

var a = [ "siddharth", "sid", "anything", "something", "nothing", ] 
var b = [ "23", "67", "10", "10", "90" ] 

Ich versuche, ein JSON aus dieser Arrays als a als Schlüssel und b als Werte zu erstellen, wie unten dargestellt:

{ "siddharth" : "23", "sid" : "67" } 

Wie kann ich dies erreichen mit javascript oder jquery. Meine aktuellen Code ist

var convert = '{'+datatest.columnHeaders[i].name +":"+datatest.rows[0][i]+'}'; 
     pair = convert;/*JSON.stringify(convert);*/ 
     array.pairArray.push(pair); 
+0

Doppelte Frage? Ist nicht JSON.stringify (convert); Arbeiten? – VikrantMore

Antwort

14

beide Arrays Unter der Annahme, sind immer gleich lang:

var obj = {} 
for (var i = 0; i < a.length; i++) { 
    //or check with: if (b.length > i) { assignment } 
    obj[a[i]] = b[i] 
} 
2

var a = [ "siddharth", "sid", "anything", "something", "nothing" ]; 
 
var b = [ "23", "67", "10", "10", "90" ]; 
 

 
var c = {}; 
 
$.each(a, function(i,v) { 
 
    c[ v ] = b[ i ]; 
 
}); 
 

 
$('body').append(JSON.stringify(c)); 
 
//Output: {"siddharth":"23","sid":"67","anything":"10","something":"10","nothing":"90"}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

1

Sie Ebene Objekt erstellen und es als das Mapping Behälter verwenden:

var a = [ "siddharth", "sid", "anything", "something", "nothing" ]; 
var b = [ "23", "67", "10", "10", "90" ]; 
var obj = {}; 
for (i = 0; i < a.length; i++) { 
    obj[a[i]] = b[i]; 
} 
alert(JSON.stringify(obj)); 

Bitte beziehen Sie sich für weitere Informationen zu How to create a hash or dictionary object in JavaScript

1

Sie würden Anführungszeichen um den Namen und den Wert benötigen, andernfalls am Ende mit einem String wie {siddharth:23,sid:67} up:

// mock the data 
 
var datatest = { 
 
    columnHeaders: [ { name: "siddharth" }, { name: "sid" }, { name: "anything" }, { name: "something" }, { name: "nothing" } ], 
 
    rows: [[ "23", "67", "10", "10", "90" ]] 
 
}; 
 

 
var json = '{'; 
 
for (var i = 0; i < datatest.columnHeaders.length; i++) { 
 
    if (i > 0) json += ','; 
 
    json += '"' + datatest.columnHeaders[i].name + '":"' + datatest.rows[0][i] +'"'; 
 
} 
 
json += '}'; 
 

 
// show result in StackOverflow snippet 
 
document.write(json);

2

Dieses Beispiel ist gleich tymeJVs Beispiel, aber forEach Schleife für Array verwendet. Für mich sieht es kürzer aus.

var obj = {}; 
a.forEach(function(item, i) { 
    obj[item] = b[i]; 
}); 
console.log(JSON.stringify(obj)); // {"siddharth":"23","sid":"67","anything":"10","something":"10","nothing":"90"} 
1

Kürzeste i kann mit ES6 Fett Pfeil Funktion, Karte bekommen, reduzieren & computed property names

var a = ["siddharth", "sid", "anything", "something", "nothing", ] 
 
var b = ["23", "67", "10", "10", "90"] 
 

 
const mergeArrToJSON = (a, b) => a 
 
    .map((item, i) => ({[item]: b[i]})) 
 
    .reduce((json,val)=>Object.assign({},json,val)) 
 

 
console.log(mergeArrToJSON(a, b))

0

Wenn Sie bereit sind, eine andere berühmte Dritt hinzufügen javascript Utility-Bibliothek

Lodash, verwenden Sie zipObject:

_.zipObject(a, b); 

Unterstrichen verwenden object:

_.object(a, b); 
0

Wenn Sie frei sind zusätzliche Plugin verwenden dann

UNDERSCORE

ist, was Sie für

suchen
_.object(['moe', 'larry', 'curly'], [30, 40, 50]); 
=> {moe: 30, larry: 40, curly: 50} 

Einleitungscode. Fügen Sie einfach Folgendes ein: js

https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js 
Verwandte Themen