Javascript 从字符串数组中删除Lodash
我有一个字符串数组,希望立即删除其中一些字符串。但它不起作用Javascript 从字符串数组中删除Lodash,javascript,lodash,Javascript,Lodash,我有一个字符串数组,希望立即删除其中一些字符串。但它不起作用 var list = ['a', 'b', 'c', 'd'] _.remove(list, 'b'); console.log(list); // 'b' still there 我猜这是因为。.remove函数接受字符串作为第二个参数,并认为这是属性名。在这种情况下,如何让lodash执行相等检查?函数\uRemove不接受字符串作为第二个参数,而是为数组中的每个值调用的谓词函数。如果函数返回true,则该值将从数组中删除 Lo
var list = ['a', 'b', 'c', 'd']
_.remove(list, 'b');
console.log(list); // 'b' still there
我猜这是因为
。.remove
函数接受字符串作为第二个参数,并认为这是属性名。在这种情况下,如何让lodash执行相等检查?函数\uRemove不接受字符串作为第二个参数,而是为数组中的每个值调用的谓词函数。如果函数返回true
,则该值将从数组中删除
Lodas文件:
从谓词返回truthy for和的数组中移除所有元素
返回已删除元素的数组。谓词绑定到
thisArg并使用三个参数调用:(值、索引、数组)
因此,如果要从数组中删除b
,您应该执行以下操作:
var list = ['a', 'b', 'c', 'd']
_.remove(list, function(v) { return v === 'b'; });
["a", "c", "d"]
正如朱塞佩·佩斯指出的那样,
.remove
需要一个函数。一种更直接的方法是使用\而不是,它直接删除元素
_.without(['a','b','c','d'], 'b'); //['a','c','d']
您还有一个选择是使用u.pull,它与u.without不同,它不创建数组的副本,而只是修改它:
_.pull(list, 'b'); // ['a', 'c', 'd']
参考:返回值应该是v='b',而不是v!='b'@trevor编号。该编号仅与b
匹配。我们想要的是相反的我想他们只是想根据代码中的注释删除“b”:“b仍然存在”是的,我想从我的列表中删除“b”。所以这里应该是相等的表达式,所以,我发现\uu0.without
完全符合我的需要,但是创建了数组的副本