昨晚,我真的很无聊,我想到了一个小小的脚本.基本上我在考虑PHP与JavaScript相比有多少内置函数,然后我意识到我真的不知道JavaScript实际上有多少函数.我想过编写一个脚本来查看窗口对象,包括对象内的每个对象,等等.我编写了脚本并且它有效(在较小的对象上尝试过).
但是,我的问题是JavaScript不会让我循环整个windows对象.
我试过了:
for (var key in window) {
console.log(key);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
var a = Object.create(window);
for (var key in a) {
console.log(key);
}
Run Code Online (Sandbox Code Playgroud)
两段代码都给了我:
top
window
location
external
chrome
Intl
v8Intl
document
script1374438467163
$pick
$try
IFrame
Elements
OverText
IframeShim
Mask
Clientcide
dbug
value
debugCookie
StyleWriter
StickyWin
TabSwapper
Collapsible
Collapsable
Drag
Cookie
Accordion
Asset
Spinner
MultipleOpenAccordion
MooTools
typeOf
instanceOf
Type
Hash
Native
$A
$arguments
$chk
$clear
$defined
$each
$empty
$extend
$H
$merge
$lambda
$mixin
$random
$splat
$time
$type
$unlink
Browser …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用循环对数组进行迭代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) 我通常使用此模式迭代对象属性:
for(var property in object) {
if(object.hasOwnProperty(property)) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢这种过度的缩进,最近有人向我指出我可以通过这样做摆脱它:
for(var property in object) {
if(!object.hasOwnProperty(property)) {
continue;
}
...
}
Run Code Online (Sandbox Code Playgroud)
我喜欢这个,因为它没有引入额外的缩进级别.这种模式是否正常,还是有更好的方法?
我最近偶然发现了在JavaScript中使用for..in循环的问题.
根据这个 问题的答案,for..in旨在枚举对象的属性,包括继承的属性.
如果是这样,为什么我们能够使用Object.defineProperty将属性定义为不可枚举?这不符合for..in的全部意图吗?或者它被认为是不好的做法,应该避免?
另外,为什么我们要首先以这种方式迭代所有属性(即使用for..in循环)?什么时候可以派上用场?
为什么不将所有(Array)原型扩展定义为不可枚举并继续使用for..in和数组?
我需要设置此数组中每个项目的值,然后向上计数。
因此,例如,path [0] .value = 1,path [1] .value = 2等等。
编辑:我正在寻找最有效的方法来做到这一点。
我认为for循环是最好的方法,但是我想学习其他方法。可以使用map()方法或forEach()完成吗?声明中的...呢?我想用纯JS来做,但是如果您可以教我使用jQuery更好的方法,我也很想学习。
提前致谢。
function Cell(x,y){
this.xCoordinate = x;
this.yCoordinate = y;
this.value;
}
var path = [new Cell(0,0), new Cell(0,1), new Cell(0,2)];Run Code Online (Sandbox Code Playgroud)
我在PHP中填充关联数组,并在JS函数中访问该数组。我使用json_encode()将PHP数组转换为JS数组。我使用IE 8运行此应用程序。在使用IE 8的某些计算机中,for(;;)可以工作,但在其他计算机中则失败。在某些使用IE 8的计算机中,for(var in)可以工作,但在其他计算机中则失败。以下代码有什么区别?
for (var k = 0; k < ruleList.length; k++){ //do something }
for (var x in ruleList){ //do something }
Run Code Online (Sandbox Code Playgroud) 如果我for-in在 dart 中使用循环List,是否可以保证迭代的顺序正确?例如执行以下代码
List bars = getSomeListOfBars();
for(bar in bars){
foo(bar);
}
Run Code Online (Sandbox Code Playgroud)
与以下完全相同的方式?
List bars = getSomeListOfBars();
for(int i=0;i<bars.length;i++){
foo(bar[i]);
}
Run Code Online (Sandbox Code Playgroud)
我没有dart在任何地方找到具体的解释,谢谢。
我在 Swift 3.0 中有一些代码,就像这样尝试更新元素数组中的属性......
for point in listOfPoints {
var pointInFrame : Float = Float(point.position.x * sensorIncomingViewPortSize.width) + Float(point.position.y)
point.status = getUpdateStatus( pointInFrame )
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一个编译错误:“无法分配给属性:‘point’是一个‘let’常量”[第 3 行]
无论如何,有没有办法使迭代器(点)在 Swift 中可变,就像如何使用“inout”作为函数参数?
或者你应该以另一种方式完成这项任务?
提前致谢。
斯坦
我正在使用 Cucumber js,我想填写应用程序中的一些字段,所以我使用 for-in 从 rowHash 中获取数据,但我收到错误消息“for 的正文- in 应该包含在 if 语句中,以从原型 guard-for-in 中过滤不需要的属性”我不确定我应该如何使用 for 中的 if 来编码我的 for-in。
这是我的代码:
this.fillRequiredfields = function(dataTable){
var rows = dataTable.rowsHash();
for (var row in rows) {
var val = rows[row];
if (row === 'firstname') {
element(by.name('firstName')).sendKeys(val).isPresent();
}
if (row === 'lastname') {
element(by.name('lastName')).sendKeys(val).isPresent();
}
if (row === 'emailaddress') {
element(by.name('emailAddress')).sendKeys(val).isPresent();
}
if (row === 'displayname') {
element(by.name('displayName')).sendKeys(val).isPresent();
}
if (row === 'password') {
element(by.name('newPassword')).sendKeys(val).isPresent();
}
}
};
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试在 git 中进行提交时,我从 eslint 获得了“guard-for-in”。如果有人可以向我解释我应该如何在 for-in …
我在for循环和if语句中使用 python in运算符。我的问题是如何实现的,在这两种情况下它的行为不同:它在使用for循环时进行迭代,并在使用if语句时检查某些元素是否存在?这是否取决于for和if的实现?
for i in x:
#iterates
if i in x:
#checks weather i in x or not
Run Code Online (Sandbox Code Playgroud) for-in-loop ×10
javascript ×6
arrays ×3
for-loop ×2
loops ×2
swift ×2
automation ×1
collections ×1
cucumber ×1
dart ×1
enumerable ×1
eslint ×1
foreach ×1
if-statement ×1
immutability ×1
iteration ×1
iterator ×1
jquery ×1
object ×1
python ×1