相关疑难解决方法(0)

1761
推荐指数
23
解决办法
82万
查看次数

JavaScript for ... in vs for

你认为for in和for循环有很大的不同吗?您更喜欢使用什么样的"for"?为什么?

假设我们有一组关联数组:

var myArray = [{'key': 'value'}, {'key': 'value1'}];
Run Code Online (Sandbox Code Playgroud)

所以我们可以迭代:

for (var i = 0; i < myArray.length; i++)
Run Code Online (Sandbox Code Playgroud)

和:

for (var i in myArray)
Run Code Online (Sandbox Code Playgroud)

我没有看到很大的不同.有任何性能问题吗?

javascript

455
推荐指数
11
解决办法
29万
查看次数

JavaScript循环:for ... in vs for

我在Javascript中遇到了一个奇怪的行为.我明白了

"对象不支持此属性或方法"

removeAttribute以下代码中的函数异常:

var buttons = controlDiv.getElementsByTagName("button");
for ( var button in buttons )
    button.removeAttribute('disabled');
Run Code Online (Sandbox Code Playgroud)

当我用以下代码更改代码时,问题消失了:

var buttons = controlDiv.getElementsByTagName("button");
for ( var i = 0; i < buttons.length; i++ )
    buttons[i].removeAttribute('disabled');
Run Code Online (Sandbox Code Playgroud)

button里面有for...in什么价值?

javascript arrays for-loop for-in-loop

13
推荐指数
2
解决办法
8938
查看次数

Screeps:计算身体的构建成本

在玩游戏screeps.com时,我想计算构建所需身体的成本.请参阅下面的我的尝试,cfg.bodybodypart数组在哪里,例如[Game.ATTACK, Game.MOVE, Game.WORK, Game.CARRY, Game.MOVE]:

var buildCost = 0;

for(var bodypart in cfg.body){
  switch(bodypart){
    case "MOVE":
    case "CARRY":
       buildCost+=50;
       break;
    case "WORK":
       buildCost+=20;
       break;
    case "HEAL":
       buildCost+=200;
       break;
    case "TOUGH":
       buildCost+=20;
       break;
    case "ATTACK":
       buildCost+=80;
       break;
    case "RANGED_ATTACK":
       buildCost+=150;
       break;
  }
  console.log(bodypart + " costs " + buildCost);
}
Run Code Online (Sandbox Code Playgroud)

打印bodypart到控制台时,它显示索引(0,1,2,3,...),buildCost保持为0.

成本和零件在Screeps页面上描述.

javascript screeps

13
推荐指数
3
解决办法
5275
查看次数

迭代一个对象数组时返回false或true

我希望find()函数true在找到'john'并停止迭代槽数时返回.或者,如果寻找名称,则返回false,比如说maria,这不在我们的任何对象中.我不明白我在这段代码中无法实现我所需要的东西?谢谢.

var array = [
    {name:'paul',age:20},
    {name:'john',age:30},
    {name:'albert',age:40}
];

var find = function(arr){
    arr.forEach(function(i){
        if(i.name === 'john'){
            console.log('found him');
            return true;
        } else {
            console.log('not there');
            return false;
        }
    });
};
find(array);
Run Code Online (Sandbox Code Playgroud)

我在这里看到了一些类似的问题,但我无法理解或理解我的问题的答案.显然我需要函数能够返回name值并同时返回truefalse.

javascript foreach if-statement return

3
推荐指数
1
解决办法
352
查看次数