代码之家  ›  专栏  ›  技术社区  ›  user1795832

通过包含布尔值的对象循环

  •  0
  • user1795832  · 技术社区  · 6 年前

    我有一个键/值对的对象,可能包含布尔值。我需要评估值的类型,以便知道返回什么。所以假设我有一个物体,看起来像:

    { 
     aKey: false,
     anotherKey: 4,
     yetAnotherKey: true
    }
    

    我想循环访问其中的每个键/值对,并根据值的类型做一些不同的事情。如果我使用 Object.keys(options).map((key, index) 它将布尔值从真/假转换为0/1,因此我无法知道这些值实际上是布尔值。

    最好的方法是什么?

    2 回复  |  直到 6 年前
        1
  •  2
  •   tehhowch    6 年前

    我认为你只是“抽搐”-你甚至没有检查 options 映射函数中的对象。第二个参数提供给 Array#map 回调始终是索引。

    扩展代码以检查值的类型 选项 :

    Object.keys(options).map((key, i, all_keys) => {
      let val = options[key];
      console.log(typeof val)
      ...
    });
    

    考虑在javascript中查看不同的迭代/枚举方法,例如 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration

    How to iterate over a JavaScript object?

        2
  •  1
  •   nbwoodward    6 年前

    你的 .map(key, index) 正在数组上循环 ["aKey", "anotherKey", "yetAnotherKey"] 失去价值 options . 也许这样的事情对你有用:

    for( o in options ){
        console.log(o, options[o])
    }
    
    > aKey false
    > anotherKey 4
    > yetAnotherKey true