在javascript中使用for-in循环从对象中获取值

在javascript中使用for-in循环从对象中获取值,javascript,for-in-loop,Javascript,For In Loop,我是一名JS新手,正在努力理解在使用for-in循环时如何从对象中获取值。你们能和我分享一下你们的知识吗。谢谢 这是我的问题,下面的代码只是记录属性,我尝试使用for-in循环来查找对象是否包含值“apple” 试试这个: for (var key in mac) { if (mac[key] === 'apple'){ console.log('Contains apple'); } } 试试这个: for (var key in mac) { if (mac[key]

我是一名JS新手,正在努力理解在使用for-in循环时如何从对象中获取值。你们能和我分享一下你们的知识吗。谢谢

这是我的问题,下面的代码只是记录属性,我尝试使用for-in循环来查找对象是否包含值“apple”

试试这个:

for (var key in mac) {
  if (mac[key] === 'apple'){
    console.log('Contains apple');
  }
}
试试这个:

for (var key in mac) {
  if (mac[key] === 'apple'){
    console.log('Contains apple');
  }
}

解决方案1

正如您的问题所述,如果您只想检查
apple
是否是对象的值之一,则可以使用如下方法

var foundApple = Object.keys(mac).some(function(key) {
    return mac[key] === "apple";
});
console.log(foundApple);
var foundApple = false;
for (var key in mac) {
    foundApple = (mac[key] === "apple");
    if (foundApple) break;
}
注意:这两个函数都是对语言的补充,因此在使用它们之前,您可能需要检查兼容性

  • 解决方案2:

    如果您正在寻找与所有常见浏览器兼容的解决方案,您可以这样做

    var foundApple = Object.keys(mac).some(function(key) {
        return mac[key] === "apple";
    });
    console.log(foundApple);
    
    var foundApple = false;
    for (var key in mac) {
        foundApple = (mac[key] === "apple");
        if (foundApple) break;
    }
    

    解决方案1

    正如您的问题所述,如果您只想检查
    apple
    是否是对象的值之一,则可以使用如下方法

    var foundApple = Object.keys(mac).some(function(key) {
        return mac[key] === "apple";
    });
    console.log(foundApple);
    
    var foundApple = false;
    for (var key in mac) {
        foundApple = (mac[key] === "apple");
        if (foundApple) break;
    }
    
    注意:这两个函数都是对语言的补充,因此在使用它们之前,您可能需要检查兼容性

  • 解决方案2:

    如果您正在寻找与所有常见浏览器兼容的解决方案,您可以这样做

    var foundApple = Object.keys(mac).some(function(key) {
        return mac[key] === "apple";
    });
    console.log(foundApple);
    
    var foundApple = false;
    for (var key in mac) {
        foundApple = (mac[key] === "apple");
        if (foundApple) break;
    }
    
    应该是

    for (var key in mac) {
      console.log(key, mac[key]);
    }
    
    应该是

    for (var key in mac) {
      console.log(key, mac[key]);
    }
    

    我想花点时间在这里给出我自己的答案。我之前查过了,很快就找到了答案。我将尝试解释一下,如果其他人对这个概念有困难(通常是新手)

    概述 在vanilla Javascript/ECMAscript中,可以使用for循环构造函数通过数组或对象进行循环。for循环的格式只取决于循环的对象:数组或对象

    请在此处阅读有关for循环的更多信息:

    对于包含对象的循环 for循环的语法与数组稍有不同,通常称为“for in”循环

    您可以在此处阅读有关Javascript中“for-in”循环的更多信息:

    以下是语法:

    for( key in object) {
      console.log(key); // this logs the key name in the loop to the console
      console.log(object[key]) // this logs the key value in the loop to the console
    }
    
    分解上面发生的事情:

    key只是一个通用变量,表示循环中对象的键。这可以是您想要的任何内容:

    for( someBullShit in object) {
      console.log(someBullShit); 
      console.log(object[someBullShit]);
    }
    
    此循环的输出与前面的示例相同

    在“for-in”循环中访问对象值 如上例所述,您可以访问“for in”循环中对象键的值,这与您通常访问的完全相同,只是您将使用“key变量”代替实际的键名

    例如:

    object[keyname] // this represents the value of a given key
    
    var array = [1,2,3,4,5];
    
    for(var i = 0; [condition]; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; i < array.length ; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; [condition]; i++) {
       ...
    }
    
    我还提供了以下额外信息,以防有人觉得有用:

    对于带有数组的循环 循环的“标准”格式很简单:

    对于([初始化];[条件];[最终表达式]) 声明

    简单来说:

    初始化-设置一个起点(在Javascript中,出于计数目的,该起点的索引为0)

    例如:

    object[keyname] // this represents the value of a given key
    
    var array = [1,2,3,4,5];
    
    for(var i = 0; [condition]; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; i < array.length ; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; [condition]; i++) {
       ...
    }
    
    这意味着循环从0开始计数

    条件-设置循环停止的时间。99.9%的时间,当循环成功循环每个项目一次时,您将告诉循环结束

    例如:

    object[keyname] // this represents the value of a given key
    
    var array = [1,2,3,4,5];
    
    for(var i = 0; [condition]; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; i < array.length ; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; [condition]; i++) {
       ...
    }
    

    这里的最终表达式值只是表示将这个变量的值增加1。

    我想花点时间把我自己的答案放在这里。我之前查了一下,很快就找到了答案。如果其他人对这个概念有困难,我会尝试解释一下(通常是新手)

    概述 在vanilla Javascript/ECMAscript中,您可以使用for循环构造函数在数组或对象之间循环。for循环的格式取决于您循环的对象:数组或对象

    请在此处阅读有关for循环的更多信息:

    对于包含对象的循环 for循环的语法与数组稍有不同,通常称为“for in”循环

    您可以在此处阅读有关Javascript中“for-in”循环的更多信息:

    以下是语法:

    for( key in object) {
      console.log(key); // this logs the key name in the loop to the console
      console.log(object[key]) // this logs the key value in the loop to the console
    }
    
    分解上面发生的事情:

    key只是一个通用变量,表示循环中对象的键。这可以是任何您想要的:

    for( someBullShit in object) {
      console.log(someBullShit); 
      console.log(object[someBullShit]);
    }
    
    此循环的输出与前面的示例相同

    在“for-in”循环中访问对象值 如上例所述,您可以访问“for in”循环中对象键的值,这与您通常访问的完全相同,只是您将使用“key变量”代替实际的键名

    例如:

    object[keyname] // this represents the value of a given key
    
    var array = [1,2,3,4,5];
    
    for(var i = 0; [condition]; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; i < array.length ; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; [condition]; i++) {
       ...
    }
    
    我还提供了以下额外信息,以防有人觉得有用:

    对于带有数组的循环 循环的“标准”格式很简单:

    对于([初始化];[条件];[最终表达式]) 声明

    简单来说:

    初始化-设置一个起点(在Javascript中,出于计数目的,该起点的索引为0)

    例如:

    object[keyname] // this represents the value of a given key
    
    var array = [1,2,3,4,5];
    
    for(var i = 0; [condition]; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; i < array.length ; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; [condition]; i++) {
       ...
    }
    
    这意味着循环从0开始计数

    条件-设置循环停止的时间。99.9%的时间,当循环成功循环每个项目一次时,您将告诉循环结束

    例如:

    object[keyname] // this represents the value of a given key
    
    var array = [1,2,3,4,5];
    
    for(var i = 0; [condition]; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; i < array.length ; [final-expression]) {
       ...
    }
    
    var array = [1,2,3,4,5];
    
    for([initialization]; [condition]; i++) {
       ...
    }
    
    这里的最后一个表达式值表示将这个变量的值增加1

    Object.entries()方法返回给定对象自身的可枚举字符串键控属性[key,value]对数组,其顺序与for…in循环提供的顺序相同。(唯一重要的区别是for…in循环也枚举原型链中的属性)

    Object.entries()方法返回给定对象自身可枚举字符串键控属性[key,value]对的数组,其顺序与for…in循环提供的顺序相同。(唯一重要的区别是for…in循环枚举