2016-09-02 103 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);