草庐IT

VT_ARRAY

全部标签

javascript - 使用 Array.isArray 和 instanceof Array 的区别

有两种方法可以判断一个数组是数组还是对象。使用typeofitem==="object";将为对象和数组返回true,因为数组对于javascript来说相对较新,并且数组是对象的原型(prototype)(可能措辞有误,请随时更正我)。所以我知道的两种确定数组是否为数组的方法是:解决方案一:Array.isArray(item);解决方案2:iteminstanceofArray;我的问题是:这两种解决方案有什么区别?这两个方案中哪一个是首选解决方案?哪个处理时间更快? 最佳答案 1.Whatisthedifferencebetw

javascript - For循环性能: storing array length in a variable

考虑同一循环迭代的两个版本:for(vari=0;i和varlen=nodes.length;for(vari=0;i后一个版本比前一个版本快吗? 最佳答案 接受的答案是不正确的,因为任何像样的引擎都应该能够hoistthepropertyloadoutoftheloop有如此简单的循环体。参见thisjsperf-至少在V8中itisinterestingtosee实际上如何将它存储在变量中会改变寄存器分配-在使用变量的代码中,sum变量存储在堆栈中,而使用array.length-in-a-loop-code它存储在一个寄存器中

javascript - 有什么方法可以扩展 javascript 的 array.sort() 方法以接受另一个参数?

我正在尝试对一组对象进行排序。我不想为每个属性编写自定义排序方法。我是否可以扩展内置的array.sort()方法来接受一个额外的参数,描述要排序的属性?例如,array.sort(function(a,b,attr){returna.attr-b.attr;},'name'); 最佳答案 编写一个接受属性名的函数生成器:functionpropComparator(prop){returnfunction(a,b){returna[prop]-b[prop];}}arr.sort(propComparator('name'));您

javascript - 为什么在 javascript 中没有 Array.prototype.flatMap?

flatMap在集合上非常有用,但javascript在拥有Array.prototype.map时不提供。为什么?有没有什么方法可以在不手动定义flatMap的情况下以简单有效的方式在javascript中模拟flatMap? 最佳答案 更新:Array.prototype.flatMap进入ES2019它在许多环境中得到广泛支持。使用下面的代码片段查看它是否适用于您的浏览器-constdata=[1,2,3,4]console.log(data.flatMap(x=>Array(x).fill(x)))//[1,2,2,3,3,

javascript - JavaScript 的 array.clear() 不是函数吗?

这个问题在这里已经有了答案:HowdoIemptyanarrayinJavaScript?(18个答案)关闭8年前。当按下“清除”按钮时,我试图清空一个包含我绘制的坐标的数组。当我调用drawnDivs.clear()时,我得到一个错误,提示它不是一个函数。drawnDivs当然是一个数组,我有Firebugconsole.log打印内容。这是hostedhere.

javascript - Array.length = 0 和 Array =[] 的区别?

有人能解释一下两者之间的概念差异吗?在某处读到第二个通过销毁对现有数组的所有引用来创建一个新数组,而.length=0只是清空数组。但这对我不起作用//Declarationvararr=newArray();下面是循环执行的代码。$("#dummy").load("something.php",function(){arr.length=0;//expectedtoemptythearray$("div").each(function(){arr=arr+$(this).html();});});但是如果我将代码替换为arr=[]代替arr.length=0它工作正常。任何人都可以解

javascript - 为什么 array.push 有时比 array[n] = value 快?

作为测试一些代码的附带结果,我编写了一个小函数来比较使用array.push(value)方法与直接寻址array[n]=value。令我惊讶的是,push方法通常表现得更快,尤其是在Firefox中,有时在Chrome中。出于好奇:有人对此有解释吗?你可以找到测试@thispage(点击'数组方法比较') 最佳答案 各种因素都在起作用,大多数JS实现都使用平面数组,如果以后有必要,它会转换为稀疏存储。基本上,变得稀疏的决定是一种启发式方法,它基于要设置哪些元素,以及为了保持平坦会浪费多少空间。在您的情况下,您首先设置最后一个元素,

javascript - 在 JavaScript 中使用 Array.map 删除元素

我想使用map()函数过滤一组项目。这是一个代码片段:varfilteredItems=items.map(function(item){if(...somecondition...){returnitem;}});问题是过滤掉的项目仍然使用数组中的空间,我想完全清除它们。有什么想法吗?编辑:谢谢,我忘记了filter(),我想要的实际上是一个filter(),然后是一个map()。EDIT2:感谢您指出map()和filter()并未在所有浏览器中实现,尽管我的特定代码并不打算在浏览器中运行。 最佳答案 您应该使用filter方法

javascript - Angular react 形式 : Producing an array of checkbox values?

给定绑定(bind)到相同formControlName的复选框列表,我如何生成绑定(bind)到formControl的复选框值数组,而不是简单地true/假?示例:checkboxGroup.controls['myValues'].value当前生成:trueorfalse我希望它产生什么:['value-1','value-2',...] 最佳答案 在silentsodanswer的帮助下,我编写了一个解决方案来在我的formBuilder中获取值而不是状态。我使用一种方法在formArray中添加或删除值。这可能是一个糟糕

javascript - 如何使用 Array.sort() 正确排序数字?

这个问题在这里已经有了答案:Howtosortanarrayofintegerscorrectly(32个答案)关闭9年前。在多个浏览器中,以下代码无法正确排序数字:a=newArray();a.push(10);a.push(60);a.push(20);a.push(30);a.push(100);document.write(a.sort())它返回10,100,20,30,60。有人知道为什么吗?