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

The lodash way to delete nested array elements

我有一个像这样的数组:

[[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]);
  }

虽然这感觉不是很 lodash。你会如何处理它?

你可以这样实现:

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

否则,如果你想使用地图:

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

我会这样做:

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() 函数确保回调只得到一个传递给它的参数,即 collection 项。
  • partialRight()函数是partially-applying2take()函数的第二个参数。第一个参数将是 collection 项。
  • take() 函数正在从数组中取出前 n 项。