【问题标题】:How can I get index of an object property in javascript?如何在 javascript 中获取对象属性的索引?
【发布时间】:2019-12-18 22:24:46
【问题描述】:
var playerParametrs = {
    "blemishes" : 0,
    "Facial_Hair" : 0,
    "ChinShape" : 0, 
    "NeckWidth" : 0
}

如何获取属性的索引? 例如,indexOf("blemishes") 为 0。


【问题讨论】:

  • playerParameters["Facial_Hair"] 会给你 0,你为什么要从对象索引?
  • @justlead 我认为您误解了对象是什么以及它们如何工作。对象不像数组那样有索引。对象具有键和值。从技术上讲,一个对象可以像数组一样取消引用它的键,或者像 javascript 中的对象一样。所以在你的例子中playerParametrs['blemishes'] == playerParametrs.blemishes == 0.

标签: javascript node.js object


【解决方案1】:

这是一个简单的对象,你想要的只是属性值,而不是索引。您可以使用.[] 访问。

检查:Property accessors

console.log(playerParametrs.Facial_Hair); // 0
console.log(playerParametrs["Facial_Hair"]); // 0

【讨论】:

    【解决方案2】:

    对象属性没有索引。你必须把它变成一个数组,例如。

    var arr = Object.entries(playerParametrs); // [["blemishes", 0], ["Facial_Hair", 0], ["ChinShape", 0], ["NeckWidth", 0]]
    

    然后你可以使用更高的数组函数来查找“瑕疵”的索引:

    arr.findIndex(e => e[0] === "blemishes");  // 0
    

    请注意,属性将始终按照插入的顺序排列。

    【讨论】:

      【解决方案3】:

      你可以这样做

      const keys = Object.keys(playerParametrs);
      const requiredIndex = keys.indexOf('whateveryouwant');
      

      【讨论】:

        【解决方案4】:

        不需要访问索引,对象通过键:值对存储和访问它们的信息。您可以按任何顺序输入它们,并通过键访问它们。

        如果您尝试使用该值:

        if (playerParametrs.Facial_Hair === 0) {
          // do something
        }
        

        如果您尝试更新值:

        playerParametrs.Facial_Hair = 1;
        

        【讨论】:

          猜你喜欢
          • 2011-11-02
          • 1970-01-01
          • 1970-01-01
          • 2011-05-04
          • 1970-01-01
          • 2012-09-15
          • 1970-01-01
          • 2019-02-03
          • 2022-11-10
          相关资源
          最近更新 更多