草庐IT

JavaScript for 循环索引奇怪

全部标签

javascript - 带有数组的javascript的奇怪行为

让我们考虑以下JavaScript片段vararr=[];functionpushMe(){vartemp={"name":"me"};arr.push(temp)console.log(arr)temp["name"]="you";arr.push(temp)console.log(arr)}我惊讶地看到输出为[Object{name="you"},Object{name="you"}]当我们推送引用时,两者必须引用同一个对象。但至少在第一次推送之后输出必须像Object{name="me"}为什么会这样??谢谢:) 最佳答案 C

javascript - 奇怪的 javascript 表达式的解释是什么?

在JavaScript中,以下代码行给出的答案为1+!{}[true]我不明白怎么办?感谢任何大师的解释。 最佳答案 {}是一个空对象。因此{}[0]或{}[true]或{}[1]等是未定义的添加!将{}[0]转换为boolean,返回相反的值。(undefined变为false,因此返回true)。添加+将其转换为int,因此true变为1。 关于javascript-奇怪的javascript表达式的解释是什么?,我们在StackOverflow上找到一个类似的问题:

javascript - 如何从 Python 生成 D3.js 循环树状图代码

下图是用D3.js生成的。基于代码here:FlareDendrogram.nodecircle{fill:#fff;stroke:steelblue;stroke-width:1.5px;}.node{font:10pxsans-serif;}.link{fill:none;stroke:#ccc;stroke-width:1.5px;}varradius=960/2;varcluster=d3.layout.cluster().size([360,radius-120]);vardiagonal=d3.svg.diagonal.radial().projection(functio

javascript - 在 JavaScript 中使用++ 时的奇怪行为

每个人都知道JavaScript中两个字符串的基本连接:>"Hello"+"World!"'HelloWorld!'但是如果我们使用++而不是+会发生什么?我刚遇到以下奇怪行为:>"Hello"++"World!"'HelloNaN'>"Hello"++""'Hello0'从上面的例子中,我可以看到第二个字符串被转换为数字。因此,将具有valueOf属性的对象作为函数传递,该函数返回的值将被转换。>"Hello"++({valueOf:function(){return1;}})'Hello1'正如预期的那样,它显示"Hello1"。为什么在Number中转换第二个字符串?为什么不抛出

Javascript foreach 循环性能

我正在考虑改进我们的一些foreach循环,并创建了一个测试基准来比较我们使用它们的不同方式。测试可以foundhere.我惊讶地发现这段代码:functionadd(val){sum+=val;}values.forEach(add);比这个表现更好。values.forEach(function(val){sum+=val;});这些不完全一样吗?是什么让第一个代码片段比第二个更快? 最佳答案 你的测试有问题。您的测试是:values.forEach(add);和values.forEach(function(val){sum+

javascript - OrderedMap 中某项的索引

如标题所述,我想获取特定项目的索引。有办法做到这一点吗?constkey=1constmap=newImmutable.OrderedMap([5,'a'],[3,'b'],[1,'c'])因此,在这种情况下,key的索引将为2。 最佳答案 可以从map中获取按键序列:letindex=map.keySeq().findIndex(k=>k===key);Seethedocsformoreinfo.或者,您可以明确地遍历键并比较它们:functionfindIndexOfKey(map,key){letindex=-1;for(le

javascript - 尝试从元素中删除类时,for 循环仅迭代一次

在Javascript中,我有一个函数可以找到页面上具有“已连接”类的元素,并且当单击按钮时,这些元素的类将被清除。我写了这段代码:varprev_connected=document.getElementsByClassName("connected");if(prev_connected.length>0){for(varj=0;j但是,它只会删除页面上第一个“已连接”元素的类属性。当我有两个“已连接”元素时,我已确认“prev_connected”数组确实包含2个值,但出于某种原因,for循环永远不会到达第二个值。我做错了什么吗?谢谢。 最佳答案

javascript - 嵌套的forEach循环将对象添加到现有对象javascript

有没有比我在下面所做的更好的方法来迭代两个对象数组?这样做似乎很麻烦。我正在使用lodash。vararray1=[{id:4356,name:'James',sex:'male'},{id:7899,name:'Jimmy',sex:'male'},{id:2389,name:'Dawn',sex:'female'}];vararray2=[{id:4356,salary:1000,job:'programmer'},{id:7899,salary:2000,job:'tester'},{id:2389,salary:3000,job:'manager'}];示例输出:console

javascript - 如何终止 forEachObject 循环?

本题属于fabricJS和canvas。在以下情况下,检查是否有任何对象的属性为true(obj.background==true)。Canvas上可以有多个图像。在第一次对象检测之后,我想终止循环。我该怎么做?我用过returnfalse;但不起作用。这是函数。canvas.forEachObject(function(obj){if(obj.isType('image')&&obj.hasOwnProperty('background')){if(!obj.background==true){alert("true");returnfalse;}}});

javascript - for-in 循环之前和之后的 in-operator

我是Javascript的新手,我试图根据in运算符的工作原理来弄清楚for...in循环的工作原理。This消除了困惑。但是,我现在很困惑,为什么in运算符在除最后一种情况之外的所有情况下都返回false。看起来for...in循环正在使用其最后一次迭代的值在obj中创建键keyTest。我的理解对吗?当用于遍历所有对象键时,for...in循环是否会在它们迭代的对象中创建键/值?如果是这样,对理解的任何帮助都会很有帮助。varkeyTest,obj={}keyTestinobj;//falsefor(varkeyTestinobj){obj[keyTest]};keyTestino