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-applying
2
到take()
函数的第二个参数。第一个参数将是 collection 项。
- take() 函数正在从数组中取出前
n
项。
我有一个像这样的数组:
[[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-applying
2
到take()
函数的第二个参数。第一个参数将是 collection 项。 - take() 函数正在从数组中取出前
n
项。