Javascript lo-dash

时间:2014-08-21 11:16:17

标签: javascript arrays object lodash

如何使用lo-dash

获取数组并将其转换为此数组

采用数组

["BBC", "url", false, "Apple", "url", false, "Google", "url", false]

输出:

[
   {
      "title" : "BBC", 
      "href" : "url",
      "window_check": false
    },
    {               
       "title" : "Apple", 
       "href" : "url",
       "window_check": false},
    {               
       "title" : "Google", 
       "href" : "url",
       "window_check": false
    },
];

目前我这样做但失败了。

var array123 = ["BBC", "url", false, "Apple", "url", false, "Google", "url", false];

_.reduce(array123, function(result, value, key) { result[key]=value; return result;}, {});

我明白了。

{0: "BBC", 1: "url", 2: false, 3: "Apple", 4: "url", 5: false, 6: "Google", 7: "url", 8: false}

2 个答案:

答案 0 :(得分:2)

我根本不会使用下划线/ lodash:

var result = [];
for (var i=0; i<array123.length; )
    result.push({
        "title": array123[i++],
        "href": array123[i++],
        "window_check": array123[i++]
    });

如果您想采用功能性方法,请定义some chunkN method,然后使用

var result = _.chain(array123).chunkN(3).map(function(chunk) {
    return {
        "title": chunk[0],
        "href": chunk[1],
        "window_check": chunk[2]
    }
}).value();

答案 1 :(得分:1)

有你去

var keys = ['title','href','window_check'];
var out = _.reduce(array123, function(result, value, idx) {
    if (idx % keys.length == 0)
        result.push({});
    result[result.length - 1][keys[idx % keys.length]] = value;
    return result;
},[]);

如果你想为每个带有对象的X项创建新对象,你的逻辑实际上需要包含它。