删除嵌套数组元素的lodash方法

时间:2015-03-05 22:01:58

标签: javascript arrays underscore.js lodash

我有一个像:

这样的数组

[[0,1,2,3][0,1,2,3,][0,1,2,3][0,1,2,3]]

我想切片嵌套数组以仅保留前两个元素。

我在lodash中使用此代码:

 for (i = 0; i < data.length; ++i) {
        data[i] = _.slice(data[i], [start=0], [end=2]);
  }

但这并不是非常感觉。你会怎么做?

2 个答案:

答案 0 :(得分:1)

你可以这样做:

var data = [[0,1,2,3],[0,1,2,3,],[0,1,2,3],[0,1,2,3]];
_.invoke(data, 'slice', 0, 2);

否则,如果你想使用map:

data.map(function(item) { return item.slice(0, 2); }); // pure js solution
_.map(data, function(item) { return _.slice(item, 0, 2); } );

答案 1 :(得分:1)

这就是我要做的事情:

var collection = [
    [ 0, 1, 2, 3 ],
    [ 0, 1, 2, 3 ],
    [ 0, 1, 2, 3 ],
    [ 0, 1, 2, 3 ]
];

_.map(collection, _.ary(_.partialRight(_.take, 2), 1));
// → [ [ 0, 1 ], [ 0, 1 ], [ 0, 1 ], [ 0, 1 ] ]

这是发生了什么:

  • ary()函数确保回调只传递一个参数,即集合项。
  • partialRight()函数将2部分应用于take()函数作为第二个参数。第一个参数将是集合项。
  • take()函数正在从数组中获取第一个n项。