【问题标题】:Write a function called keys, which accepts an object and returns an array of all of the keys in the object编写一个名为 keys 的函数,它接受一个对象并返回对象中所有键的数组
【发布时间】:2021-03-17 17:51:56
【问题描述】:

JavaScript 初学者。我不能使用 Object.keys() 函数。这就是我到目前为止所拥有的。我无法弄清楚如何返回对象中的所有键,它只返回“['a']”,第一个键:

const keys = (obj) => {
var obj1 = {a: 1, b: 2, c: 3};
var newArray = [];

for(var key in obj1) {
  newArray.push(key);
  return newArray;
}

};

keys();

【问题讨论】:

  • 在for循环后写return语句
  • @MadhawaPriyashantha 你快到了。您只需将 return 语句移到循环块之外(在结束大括号 "}" 之后)。您现在拥有的方式是每次迭代都会执行 return 语句。但是因为“return ...”语句退出了整个函数,所以你只能得到第一个键。循环没有机会迭代其他元素。

标签: javascript arrays object javascript-objects


【解决方案1】:

您的循环只会运行一次,因为您的 return 语句在循环内,这会终止您的整个函数,包括循环。

Madhawa Priyashantha 是对的:将 return 语句放在循环之后,它应该可以工作。

【讨论】:

    【解决方案2】:

    假装不使用 Object.keys() - 您可以使用 Object.entries() 和 map() 并创建键中第一项的数组:值对。

    大概这是某种家庭作业或教学活动 - 我发帖的原因是为了表明有很多方法可以达到结果,有些只是说同一件事的不同方式。

    显而易见的答案是根据您的尝试和其他解决方案使用循环 - 但我的解决方案旨在邀请您以不同的方式看待事物。对实现某事的方式进行任意限制会迫使您采用低效的主动性或阻止您使用更新的方法。

    与其强迫你使用循环——更好的教学活动是让你使用更新的 javascript 方法——尤其是 map()、reduce() 和 filter()。

    肯定有理由让您学习循环 - 但在练习中这样做以获取对象的键会限制您使用当前代码方法的能力,而且是错误的。国际海事组织。

    仅供参考 - 我是一名前教师,我相信使用正确的学习活动和正确的学习工具来实现学习。

    const keys = (obj) => {
      return Object.entries(obj).map(item => item[0]);
    };
    
    const obj = {a: 1, b: 2, c: 3};
    
    
    console.log(keys(obj)); // gives ["a", "b", "c"]

    【讨论】:

      【解决方案3】:

      for 循环中的 return 语句在第一次迭代后终止它,因此您应该将 return 语句放在循环之后,如下所示。

      const keys = (obj) => {
        var obj1 = {
          a: 1,
          b: 2,
          c: 3
        };
        var newArray = [];
      
        for (var key in obj1) {
          newArray.push(key);
        }
      
        return newArray;
      };
      
      keys();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-23
        • 1970-01-01
        • 2019-10-18
        • 1970-01-01
        • 1970-01-01
        • 2015-06-08
        • 1970-01-01
        • 2021-07-08
        相关资源
        最近更新 更多