简体   繁体   中英

Lodash difference between _.remove() and _.pullAt()

What is the difference between lodash _.remove() and _.pullAt() functions?

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,]

I've crated fiddle and read the description on the lodash site that states that _.remove()

Removes all elements from array that predicate returns truthy for and returns an array of the removed elements

and _.pullAt()

Removes elements from array corresponding to the given indexes and returns an array of the removed elements

Is there any difference at all? Or am I missing something?

Even your example made different things:

remove splices element by value , while pullAt by index .

Let's check it with different array [0, 3, 1, 1, 5] :

  • remove : [0, 3, 5] - all 1 items removed
  • pullAt : [0, 1, 1, 5] - arr[1] was spliced

You also can write other filters than compare by value with 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM