_dremove()和_.pullAt()之间的Lodash区别

时间:2015-12-03 15:50:53

标签: javascript arrays underscore.js lodash

lodash _.remove()_.pullAt()函数有什么区别?

var arr1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
_.remove(arr1, function (item) {
  return item == 1
});

var arr2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
_.pullAt(arr2, 1);

console.log(arr1.toString() + '\n' + arr2.toString());

// both result to [0,2,3,4,5,6,7,8,9,]

我已经创建了fiddle并阅读了lodash网站上有关_.remove()

的说明
  

从谓词返回truthy的数组中删除所有元素,并返回已删除元素的数组

和_.pullAt()

  

从与给定索引对应的数组中移除元素,并返回已删除元素的数组

有什么不同吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

即使你的例子做了不同的事情:

remove拼接元素按值,而pullAt 按索引

让我们用不同的数组[0, 3, 1, 1, 5]检查它:

  • remove[0, 3, 5] - 删除了所有1
  • pullAt[0, 1, 1, 5] - arr[1]被拼接

您还可以编写其他过滤器,而不是按值与remove进行比较:

_.remove(arr, item => item % 2); // removes all odd numbers
_.remove(arr, user => user.deleted); // splice deleted users
_.remove(arr, item => item < 5); // and etc.