从对象到具有嵌套对象的数组

时间:2017-02-02 14:29:45

标签: javascript underscore.js lodash

是否有一种从对象到多个对象的简单方法?由此:

var obj = { 'generics.type': 'search.type', 'wood.name': 'search.name' }

到此:

var nestedObj = [ {'generics.type': 'search.type'}, {'wood.name': 'search.name'} ]

基本上与lodash默认值相反:https://lodash.com/docs/4.17.4#defaults

一直在寻找这个好几个小时,现在我转过来......谢谢

5 个答案:

答案 0 :(得分:2)

使用lodash或下划线,您可以使用map

var result = _.map(obj, (v,k) => ({[k]: v}));

答案 1 :(得分:1)

试试这个:

var createDiffObjs = function(obj ){
    var nestedObj = [];
    for( var prop in obj ) {
                 var elem = {};
                 elem[ prop ] = obj [prop ];
                 nestedObj.push( elem );
                }
    return nestedObj;
}

然后使用它:

nestedObj = createDiffObjs( obj ); 

答案 2 :(得分:1)

也许你想要更短的东西,但我认为显而易见的解决方案是唯一的。



var obj = { 'generics.type': 'search.type', 'wood.name': 'search.name' };
var arr = _.map(obj, function(v, k) { var o = {}; o[k] = v; return o; });
console.log(arr);

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

var nestedObj = { {'generics.type': 'search.type'}, {'wood.name': 'search.name'} }

这不是JavaScript中的有效数据结构。 JavaScript对象是一对键和值。

使用数组代替多个对象:

var multipleObjs = [ {'generics.type': 'search.type'}, {'wood.name': 'search.name'} ]

答案 4 :(得分:0)

首先使用http://pro.jsonlint.com/

检查您的对象结构是否有效

然后去调查ES2015 = ES6新的JavaScript规范,这些规范调用了数组的解构(即对象)https://babeljs.io/learn-es2015/,你将找到有关JavaScript新方法的所有内容。祝好运!!! (如果您的对象结构正确,我们可以帮助您)