标签: for-in-loop

通过JavaScript中的多个对象循环迭代

我有两个JSON对象obj1obj2。我想比较这些对象的值。

var obj1 = {"Don":"Test1","is":"hey","here":"yeah"};
var obj2 = {"Don":"Test1","is":"20","here":"lol"};
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

for( var key1 in obj1 && var key2 in obj2){
  if(obj1.hasOwnProperty(key1) && obj2.hasOwnProperty(key2))
    console.log(obj1[key1]+ " : " + obj2[key2]);
}
Run Code Online (Sandbox Code Playgroud)

我的输出应为:

Test1:Test1
hey:20
yeah:lol
Run Code Online (Sandbox Code Playgroud)

javascript iteration json loops for-in-loop

0
推荐指数
1
解决办法
3745
查看次数

Objective C - 循环遍历NSArray,其中所有对象都继承自相同的协议

我有一个NSArray,其中所有对象都从相同的协议继承方法.我想做的是:

NSArray* arr =  [NSArray arrayWithObjects:[Type_1 init],[Type_2 init], nil];

for(Protocol *element in arr)
{
  [element do_this];
}
Run Code Online (Sandbox Code Playgroud)

arr是具有对象Type_1和Type_2的数组,它们都从名为Protocol的协议继承.

问题是协议不能用作for循环中的类型.我该如何解决这个问题?

types protocols objective-c for-in-loop

0
推荐指数
1
解决办法
409
查看次数

删除对象中的虚假值

我试图循环一个对象中的所有属性并删除所有虚假的内容,然后返回使用delete. 显然我做错了什么......这是我到目前为止编写的代码。

var obj = {
  a: undefined,
  b: "banana",
  c: 0,
  d: false,
  e: "",
  f: "apple",
  g: 23
}

var truthy = function (obj) {
  for (var i in obj) {
  if (obj[i] === null || obj[i] === undefined) {
  delete obj[i];
  }
 } return obj;
}
Run Code Online (Sandbox Code Playgroud)

这是实际的问题:创建一个函数,它接收一个对象,循环遍历它的所有属性,并删除所有错误的属性。然后返回传入的对象。(提示:删除)

javascript object for-in-loop

0
推荐指数
1
解决办法
1842
查看次数

Typescript 元素隐式具有类型 any 和 for...in 循环

我有一个从 JSON 文件(带有resolveJsonModule: true)导入的 JSON 对象。该对象如下所示:

"myobject": {
  "prop1": "foo",
  "prop2": "bar"
}
Run Code Online (Sandbox Code Playgroud)

因此它的类型如下所示:

"myobject": {
  "prop1": "foo",
  "prop2": "bar"
}
Run Code Online (Sandbox Code Playgroud)

这很好,但是当我尝试使用for...in循环时,

myobject: { prop1: string, prop2: string }
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ "prop1": string; "prop2": string; }'.
  No index signature with a parameter of type 'string' was found on type '{ "prop1": string; "prop2": string; }'.
Run Code Online (Sandbox Code Playgroud)

我知道这意味着迭代器key是 …

for-in-loop object-property typescript

0
推荐指数
2
解决办法
1056
查看次数

for ... in 循环是否循环遍历序列的副本?

我在 Matt Neuburg 的《iOS 13 Swift 编程基础》中看到了如下的陈述:

\n
\n

当您使用 for...in 循环访问序列时,您实际循环访问的是该序列的副本。这意味着当你循环遍历序列时,改变序列是安全的:

\n
\n

作者为上述陈述提供了以下示例:

\n
var s : Set = [1,2,3,4,5]\nfor i in s {\n    if i.isMultiple(of:2) {\n        s.remove(i)\n    }\n} // s is now [1,3,5]\n
Run Code Online (Sandbox Code Playgroud)\n

在上面的示例中,我们可以看到原始数组从 [1,2,3,4,5,6] 更改为 [1,3,5]。这意味着数组本身已更改。因此,for in循环不是循环原始数组的副本,而是循环数组本身。这似乎与作者上述的说法相矛盾。

\n

所以,我不确定作者的说法是否属实。有人可以澄清一下这个问题吗?非常感谢。

\n

arrays loops for-in-loop swift

0
推荐指数
1
解决办法
429
查看次数

for ... in循环中的奇怪问题

这有效:

for (var i = 0; i < this.size(); i++) {
    values.push(this.cards[i].value);
}
Run Code Online (Sandbox Code Playgroud)

但这不是:

for (var card in this.cards) {
    values.push(card.value);
}
Run Code Online (Sandbox Code Playgroud)

为什么?

javascript arrays for-loop for-in-loop

-1
推荐指数
1
解决办法
73
查看次数

JavaScript"for in"循环中的问题

我有一系列对象,它们将成为我网站中某个菜单的基础.它将使用JavaScript构建:

[
  {"menuName":"Contact Info","sectionName":"contacts"},
  {"menuName":"Facilities","sectionName":"facilities"},
  {"menuName":"Locations","sectionName":"locations"},
  {"menuName":"Packages","sectionName":"packages"},
  {"menuName":"Policies","sectionName":"policies"},
  {"menuName":"Reviews","sectionName":"reviews"},
  {"menuName":"Rooms","sectionName":"rooms"}
]
Run Code Online (Sandbox Code Playgroud)

所以我决定使用"for in loop",这样我就不必处理索引和长度了.我建议在构建时在菜单中显示七个项目(我将使用<ul><li>).

当我调试并意外地添加了背景颜色<li>时,是什么时候全都崩溃了.<li>在可见的第7个菜单后,我发现至少有30个空<li>.

为什么会这样?

编辑:

这是循环.循环为另一个函数创建另一个对象,以便稍后解析.(它创建一个<li>带有<a>前一个数组提供的属性的内部.)我知道另一个函数工作正常,因为当我将这个"for-in"循环更改为普通for循环或while循环时,它工作正常.

this.sectionList = function(menu, id) {
    var list = new Array();

    for(var i in menu) {
        var listItem = {
            "element" : "li",
            "contains" : [{
                "element" : "a",
                "attr" : {
                    "href" : menu[i].sectionName + ':' + id
                },
                "contains" : menu[i].menuName
            }]
        }
        list.push(listItem);
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays loops object for-in-loop

-2
推荐指数
1
解决办法
3203
查看次数