Lodash从字符串数组中删除

时间:2015-05-27 15:14:53

标签: javascript lodash

我有一个字符串数组,想要立即删除其中的一些。但它不起作用

var list = ['a', 'b', 'c', 'd']
_.remove(list, 'b');
console.log(list); // 'b' still there

我想这是因为_.remove函数接受字符串作为第二个参数,并认为这是属性名称。在这种情况下如何使lodash进行相等检查?

3 个答案:

答案 0 :(得分:21)

另一个选择是使用_.pull,与_.without不同,它不会创建数组的副本,而只是修改它:

_.pull(list, 'b'); // ['a', 'c', 'd']

参考:https://lodash.com/docs#pull

答案 1 :(得分:4)

正如Giuseppe Pes指出的那样,_.remove期待一个功能。更直接的方法是使用_.without代替, 直接删除元素。

_.without(['a','b','c','d'], 'b');  //['a','c','d']

答案 2 :(得分:2)

函数_.remove不接受字符串作为第二个参数,而是为数组中的每个值调用谓词函数。如果函数返回true,则从数组中删除该值。

Lodas doc:https://lodash.com/docs#remove

  

从数组中删除谓词为和返回truthy的所有元素   返回已删除元素的数组。谓词必然会   thisArg并使用三个参数调用:(value,index,array)。

因此,如果你想从数组中删除b,你应该这样:

var list = ['a', 'b', 'c', 'd']
_.remove(list, function(v) { return v === 'b'; });
["a", "c", "d"]