所以我在使用此代码在数组中查找值并将其删除(如果找到):
var index2 = myarray.indexOf(mystring);
if(index2 > -1){
myarray.splice(index2, 1);
}
但是,myarray经常更改。所以有时候,您认为我拼接时是否有可能index2值不再正确?
如果发现确保100%的良好值被删除,如何从数组中删除该值?
最佳答案
所以有时候,您认为我拼接时是否有可能index2值不再正确?
不是在绝大多数JavaScript环境中,不是,因为在那些环境(浏览器,NodeJS等)中,所有可以访问该数组的代码都在单个线程上运行,而该线程在处理任务的过程中始终不会中断(就像HTML规范所称的那样;而ES6规范则称其为工作)。 (除了在Firefox中围绕alert
的一些极端情况,但您的代码未使用它们。)因此,如果indexOf
之后但在splice
之前,则什么也不会发生另一个如图所示。
在某些环境中,JavaScript不是单线程的。最常见的是Java虚拟机,它可以通过Rhino和Nashorn(“ nass-horn”)脚本引擎运行JavaScript代码。
您也可以通过web workers在浏览器上具有多个线程,但是它们只能通过消息传递进行通信,因此两个单独的线程无法更新同一数组。