2016-09-02 84 views
1

創建新的單一對象我想要一個Object,我可以簡單地切換到JSON格式導出以後。 爲此,我有objectsarray這樣的:從ArrayObject的

[ 
    { 
    "name": "Test", 
    "value": "EN Test" 
    }, 
    { 
    "name": "Test2", 
    "value": "DE test2" 
    } 
] 

它確切這樣

{ 
"Test" : "EN Test", 
"Test2" : "DE test2", 
} 

因此與陣列的所有對象的值,但只值的單個對象的 'name' 和 'value'。 角合併/複製/擴展等正在與2個陣列,只是把它們合併沒有選項,如獲得名稱和值的唯一價值。
隨着Lodash

object = _.map(objectArray,'name'); 
Giving me 
[ "Test", "Test2", ] 
But with multiple 
object = _.map(objectArray,['name','value']); 
[ false, false, ] 
doing 
object = _.map(objectarray,_.partial(_.ary(_.pick,2),_,['name','value'])); 
output is 
[ { "name": "Test", "value": "EN Test" }, { "name": "Test2", "value": "DE test2" } ] 
not 
{ "Test" : "EN Test", "Test2" : "DE test2", } 

object = _.mapValues(objectArray,'name'); 
{ 
    "0": "Test", 
    "1": "Values", 
} 
this.lang = _.mapValues(this.exportData,_.partial(_.ary(_.pick,2),_,['name','value'])); 

    "0": { 
    "name": "Test", 
    "value": "Test" 
    }, 
    "1": { 
    "name": "TEst2", 
    "value": "Test2" 
    },.. 

我能做些什麼來實現的是

{ 
"Test" : "EN Test", 
"Test2" : "DE test2", 
} 

回答

0

試試這個

var a = [ 
 
     { 
 
     "name": "Test", 
 
     "value": "EN Test" 
 
     }, 
 
     { 
 
     "name": "Test2", 
 
     "value": "DE test2" 
 
     } 
 
    ]; 
 

 
    var obj = {}; 
 

 
    a.forEach(function(node){ 
 
     obj[node.name] = node.value 
 
    }); 
 

 
    console.log(obj);

2

使用本地JavaScript Array#reduce方法。

var data = [{ 
 
    "name": "Test", 
 
    "value": "EN Test" 
 
}, { 
 
    "name": "Test2", 
 
    "value": "DE test2" 
 
}]; 
 

 
// iterate over array 
 
var res = data.reduce(function(obj, v) { 
 
    // define the object property 
 
    obj[v.name] = v.value; 
 
    // return the object 
 
    return obj; 
 
    // define initial value as empty object 
 
    // for storing the result 
 
}, {}) 
 

 
console.log(res);