2017-05-08 47 views
1

我已经在其他的方式看到许多的答案, 但我无法找到对象数组对象如何变换对象数组对象的对象

的我想要的东西下面的示例中的对象: 我想要改造这个:

var = [ 
{"a" : {"min" : 0.5}}, 
{"b" : {"max" : 0.6}}, 
{"c" : {"min" : 0.3}}] 

这样:

var = { 
"a" : {"min" : 0.5}, 
"b" : {"max" : 0.6}, 
"c" : {"min" : 0.3} 
} 

OBJETS的阵列到对象的对象,

所以我可以用这个求解:https://github.com/JWally/jsLPSolver

感谢

回答

0

,我想你应该创建对象的类或结构。

1
const obj = arr.reduce((result, item) => { 
    const key = Object.keys(item)[0]; 
    result[key] = item[key]; 
    return result; 
}, {}); 

Array.prototype.reduce()Object.keys()是你的朋友在这里。

我认为这是很难概括这个,并使其更通用,因为你必须知道该项目的哪个键应该被用作结果的关键。但在这种情况下,只有一个,很容易使用。

0

你可以这样做。在阵列上第一环,只是从每个对象中添加键值&值到新对象

var firstArray = [{ 
 
    "a": { 
 
     "min": 0.5 
 
    } 
 
    }, 
 
    { 
 
    "b": { 
 
     "max": 0.6 
 
    } 
 
    }, 
 
    { 
 
    "c": { 
 
     "min": 0.3 
 
    } 
 
    } 
 
] 
 

 
var arrayKey = {}; 
 
firstArray.forEach(function(item) { 
 
    for (var keys in item) { 
 
    arrayKey[keys] = item[keys] 
 
    } 
 

 

 
}) 
 
console.log(arrayKey)

2

为此,您可以使用Object.assign()和ES6传播语法。

var arr = [{"a" : {"min" : 0.5}}, {"b" : {"max" : 0.6}}, {"c" : {"min" : 0.3}}] 
 

 
var result = Object.assign({}, ...arr); 
 
console.log(result)

+0

我赞成这个 – Jankapunkt

+0

完美,它的工作原理很好 –

相关问题