2016-06-17 6 views
0

Ich habe ein Array-Objekte wieMerge Json-Array zu einem Objekt

[ 
    { 
    "name": "foo", 
    "value": "bar" 
    }, 
    { 
    "name": "foo1", 
    "value": "bar1" 
    } 
] 

und ich möchte so etwas wie

{"foo":"bar","foo1":"bar1"} 

enthalten Kann mir jemand bitte mit diesem helfen?

+0

Und was ist dein Problem? Bitte sehen Sie sich [ask] und [mcve] an. Dies wird helfen, nützliche Antworten zu erhalten. – JimHawkins

Antwort

2

einfach eine Verringerung mit Object.assign

var arr = [ 
 
    { 
 
    "name": "foo", 
 
    "value": "bar" 
 
    }, 
 
    { 
 
    "name": "foo1", 
 
    "value": "bar1" 
 
    } 
 
]; 
 

 
var arr2 = arr.reduce((z, {name,value})=> 
 
    Object.assign(z, {[name]: value}), {}); 
 

 
console.log(arr2);


Hier ist die ES5 Version

var arr = [ 
 
    { 
 
    "name": "foo", 
 
    "value": "bar" 
 
    }, 
 
    { 
 
    "name": "foo1", 
 
    "value": "bar1" 
 
    } 
 
]; 
 

 
var arr2 = arr.reduce(function(a,b) { 
 
    a[b.name] = b.value; 
 
    return a; 
 
}, {}); 
 

 
console.log(arr2);

1

Sie können einfach durch das Array iterieren und Ihre Objekteigenschaft nach Eigenschaften erstellen.
Es kann mit Array.prototype.forEach einfacher erfolgen:

var arr = [ 
 
    { 
 
    "name": "foo", 
 
    "value": "bar" 
 
    }, 
 
    { 
 
    "name": "foo1", 
 
    "value": "bar1" 
 
    } 
 
]; 
 

 
var o = {}; 
 

 
arr.forEach(function(x) { 
 
    o[x.name] = x.value; 
 
}); 
 

 
console.log(o);

+1

kannst du 'console.log' einfach in den Snippets verwenden und es wird jetzt angezeigt – naomik

+0

@naomik Oh, es sieht jetzt so toll aus :) Ich war eine Weile nicht bei SO. Danke vielmals! –

+0

Es ist ziemlich neu. Definitiv etwas, was sie lange gebraucht haben.^_ ^ – naomik

0
let items = [ 
    { 
    "name": "foo", 
    "value": "bar" 
    }, 
    { 
    "name": "foo1", 
    "value": "bar1" 
    } 
] 

let myObject = {} 
for (let item of items) { 
    myObject[item.name] = item.value; 
} 

console.log(myObject); 

Bitte beachten Sie, dass dies in es6 ist.