标签: for-in-loop

for循环中的JavaScript是否会迭代方法?

一篇关于yuiblog 的文章中,Douglas Crockford说该for in语句将迭代一个对象的方法.为什么以下代码不会产生["a","b","c","d","toString"]?是不是.toString()和my_obj的其他方法成员?

Object.prototype.toString = function(){return 'abc'}
Object.prototype.d = 4;

my_obj = {
    'a':1,
    'b':2,
    'c':3
}

a = []
for (var key in my_obj) {
    a.push(key)
}

console.log(a) // prints ["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)

javascript for-in-loop

8
推荐指数
1
解决办法
6619
查看次数

计数器作为for-in-loops中的变量

当正常使用for-in-loop时,计数器(在这种情况下number)在每次迭代中都是一个常量:

for number in 1...10 {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

这意味着我无法改变number循环:

for number in 1...10 {
    if number == 5 {
        ++number
    }
}

// doesn't compile, since the prefix operator '++' can't be performed on the constant 'number'
Run Code Online (Sandbox Code Playgroud)

有没有办法声明number为变量,而不是在循环之前声明它,或使用正常的for循环(具有初始化,条件和增量)?

variables constants declaration for-in-loop swift

8
推荐指数
1
解决办法
9666
查看次数

将自定义迭代器添加到javascript类

我试图找出如何将一个迭代器添加到javascript类,以便该类可以在for ... in循环中使用.遵循Mozilla的指示不会产生他们声称的结果. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators 给出示例的Jsfiddle:http://jsfiddle.net/KQayW/

function Range(low, high){
  this.low = low;
  this.high = high;
  this.current = low;
  this.next = function() {
    if (this.current > this.range.high)
      throw StopIteration;
    else
      return this.current++;
  }
}
function RangeIterator(range){
  this.range = range;
  this.current = this.range.low;
}
RangeIterator.prototype.next = function(){
  if (this.current > this.range.high)
    throw StopIteration;
  else
    return this.current++;
};
Range.prototype.__iterator__ = function(){
  return new RangeIterator(this);
};
var range = new Range(3, 5);
for (var i in range)
  document.getElementById("test").innerHTML = i+"</br>"; // prints …
Run Code Online (Sandbox Code Playgroud)

javascript iterator for-in-loop

7
推荐指数
3
解决办法
3164
查看次数

Swift - 使用where子句展开for循环中的可选项

我有一个带有可选成员的类:

class A {
    var i: Int? = nil
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个类型的对象数组A.数组中的某些对象具有值i,而其他对象则没有.

我想迭代数组中具有值的对象,i同时解包可选项.我没有找到同时做两件事的方法(我甚至不知道是否可能),迫使我if let在循环中编写一个构造.
例如 :

// a1, a2 have a value for i
let arr: [A] = [a1, a2, a3]
for obj in arr where obj.i != nil {
    // I want to avoid if let, or force unwrapping here
    if let unwrapped = obj.i {
        print(i)
    }
    // let unwrapped = obj.i! ...
}
Run Code Online (Sandbox Code Playgroud)

在Swift中有可能吗?

optional for-in-loop swift

7
推荐指数
2
解决办法
2412
查看次数

在 Swift 中编写多个嵌套的 for...in 循环

有没有更整洁或更好的方法来在 Swift 中编写下面的嵌套 for...in 循环?或者是否使用 for... 以正确的方式填充我的卡片?

for cardNumber in 1...3 {
    for cardSymbolIdentifier in 1...3 {
        for cardColorIdentifier in 1...3 {
            for cardShadingIdentifier in 1...3 {
                let card = Card(cardNumber: cardNumber, cardSymbolIdentifier: cardSymbolIdentifier, cardColorIdentifier: cardColorIdentifier, cardShadingIdentifier: cardShadingIdentifier)
                deckOfCards.append(card)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它确实可以完成这项工作,但我在文档中找不到有关编写多个嵌套循环的任何内容。

预先非常感谢,安迪

for-in-loop swift

7
推荐指数
1
解决办法
5323
查看次数

在JavaScript中for..in和each..in有什么区别?

在javascript中for..in和each..in语句有什么区别?是否存在我不知道的细微差别,或者它是否相同,每个浏览器都有不同的名称?

javascript foreach loops enumeration for-in-loop

6
推荐指数
2
解决办法
5280
查看次数

你如何停止快速枚举?

一旦你得到你想要的东西,你将如何停止快速枚举.

在for循环中,我知道你只需将计数器数设置为千分之一.例:

for (int i=0;i<10;i++){
    if (random requirement){
        random code
        i=1000;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以没有将快速枚举转换为正向循环类型的东西(通过比较我[array count]如何在过程中停止快速枚举?

for-loop objective-c fast-enumeration for-in-loop

6
推荐指数
1
解决办法
3167
查看次数

6
推荐指数
1
解决办法
1082
查看次数

for.in&ndash;的迭代顺序; 不是通过插入(更多?)

根据我的研究,for..in循环中键的顺序应该是未定义/不可靠的 - 但是,如果不受干扰,应该按插入顺序 - 但它不是:

我从数据库中获取此数据对象,按名称排序:

var travel = {  
    '2': { name: 'bus',  price: 10 },  
    '3': { name: 'foot', price: 0 },  
    '1': { name: 'taxi', price: 100 }  
}  
for (way in travel) console.log( travel[way].name ) // => taxi, bus, foot  
Run Code Online (Sandbox Code Playgroud)

密钥以数字方式排序(在Chrome,Firefox和Edge中).为什么?

并且(因为我错了)我怎么能按顺序遍历它们.name

javascript sorting for-in-loop

6
推荐指数
1
解决办法
154
查看次数

在不断变化的集合中使用 for .. in 进行迭代

我正在尝试使用循环对数组进行迭代for .. in ..。我的问题与在循环体内更改集合的情况有关。

似乎迭代是安全的,即使列表在此期间缩小。所述for迭代变量依次取的值(索引和)那些已经在循环的开始的数组中的元素,尽管在流所做的更改。例子:

var slist = [ "AA", "BC", "DE", "FG" ]

for (i, st) in slist.enumerated() {   // for st in slist gives a similar result
    print ("Index \(i): \(st)")
    if st == "AA" {    // at one iteration change completely the list
        print (" --> check 0: \(slist[0]), and 2: \(slist[2])")
        slist.append ("KLM") 
        slist.insert(st+"XX", at:0)   // shift the elements in the array
        slist[2]="bc"                 // replace some elements to come
        print (" --> …
Run Code Online (Sandbox Code Playgroud)

iteration collections language-lawyer for-in-loop swift

6
推荐指数
1
解决办法
187
查看次数