lodash的香草Javascript等效物,包括
我正在使用lodashlodash的香草Javascript等效物,包括,javascript,arrays,lodash,Javascript,Arrays,Lodash,我正在使用lodashincludes函数检查数组中是否存在目标值 _.includes(array, target) 并希望在ES5(或ES6)中找到一个很好的等价物 我错过什么了吗?是否没有等效的ES5 Array.prototype 或者是我使用索引的唯一选择?ES7: ES5:=0 [2, 5, 9].indexOf(5) >= 0; // true [2, 5, 9].indexOf(7) >= 0; // false 如果您喜欢函数: function in
includes
函数检查数组中是否存在目标值
_.includes(array, target)
并希望在ES5(或ES6)中找到一个很好的等价物
我错过什么了吗?是否没有等效的ES5 Array.prototype
或者是我使用索引的唯一选择?ES7:
ES5:=0
[2, 5, 9].indexOf(5) >= 0; // true
[2, 5, 9].indexOf(7) >= 0; // false
如果您喜欢函数:
function includes (array, element) { return array.indexOf(element) >= 0 }
并将其用作:
includes([2, 5, 9], 5); // true
正如您所猜测的,在vanilla ES5中,您最好的选择是.indexOf()
就像在array.indexOf(target)!=-1
。如果您想要比indexOf更智能的东西(另请参见),那么还有数组。一些(函数(o){return o==target})
。只是出于好奇,lodashincludes()
)有什么问题吗?@AdamBoduch-对lodash没有任何抱怨。我喜欢洛达斯。正在探索移除依赖关系的痛点。谢谢!很高兴知道它将在es7中可用,也很高兴了解tilde操作符!所以警告一句。“tilde”运算符实际上是按位not运算符。在你盲目使用它之前,我会仔细阅读它。您可能对使用[2,5,9]感兴趣。indexOf(5)!=-1
或其变体,以便当其他开发人员必须查看您的代码时,他/她知道发生了什么。您也可以轻松地将其包装到includes方法中。我同意@kanzelm3,使用!==1
更清楚地传达了代码的意图。它将使您的代码更具可读性,因此更易于维护。如果其他人不理解~
操作符,或者在你给自己一些时间来忘记它之后,甚至你自己都不理解,那么稍后查看此代码可能会浪费很多时间来试图弄清楚代码应该做什么。而a!==-1
对indexOf
有了基本的了解,就可以非常清楚地了解该行的功能<代码>~
可能对code golf有用,但如果不是这样,我会坚持使用更清晰的习惯用法。考虑到这看起来有多奇怪,最好不要使用它。同意。ES5版本已更改
includes([2, 5, 9], 5); // true