我有一个字符串数组,想立即删除其中的一部分。但是,这是行不通的Lodash从字符串数组中删除
var list = ['a', 'b', 'c', 'd']
_.remove(list, 'b');
console.log(list); // 'b' still there
我猜它的发生是因为_.remove
函数接受字符串作为第二个参数,并认为是属性名。如何使lodash在这种情况下做平等检查?
我有一个字符串数组,想立即删除其中的一部分。但是,这是行不通的Lodash从字符串数组中删除
var list = ['a', 'b', 'c', 'd']
_.remove(list, 'b');
console.log(list); // 'b' still there
我猜它的发生是因为_.remove
函数接受字符串作为第二个参数,并认为是属性名。如何使lodash在这种情况下做平等检查?
为您多一个选择是使用_.pull,它不像_.without,不创建数组的副本,但只能修改它来代替:
_.pull(list, 'b'); // ['a', 'c', 'd']
函数_.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"]
由于朱塞佩瘟指出,_.remove
期待的功能。更直接的做法是使用_.without
而不是,将元素直接删除。
_.without(['a','b','c','d'], 'b'); //['a','c','d']
正是我需要的,谢谢 –