【问题标题】:How to return the key of an array of objects using its name如何使用其名称返回对象数组的键
【发布时间】:2020-10-23 02:52:35
【问题描述】:

注意:我知道我在逻辑上尝试做的事情对于我为什么要实现这一点没有意义,但是我只想知道这是否可能,如果可以,我可能写错了什么?

我正在处理这样的对象数组:

this.animalsAndFruits = [
  {
    "category": "Apple",
    "num1": 1287,
    "num2": 12956
  },
  {
    "category": "Panda",
    "num1": 2574,
    "num2": 25826
  },
  ....
]

这可能看起来乏味且相当荒谬,但是使用数组我想返回单词“category”,而不仅仅是键“category”的值。

我试过了

this.objectFromArray[0].category

但是它只返回第 0 个索引项的值(即使第 0 个索引项的键始终具有键 'category')

我还有其他方法可以做到这一点吗?

附:我想得到'category'的原因是因为我需要设置一个变量='category',但是我不想像这样直接硬编码它

var someVar  = 'category'

如果有帮助,key = category 的 key:value 对中的值始终是一个字符串(而不同键下的所有其他值都是数字。

也许这样的逻辑可能会起作用 =>

if(value = string) then return key  ?

【问题讨论】:

  • 不知道为什么你想让this.objectFromArray[0].category返回category,因为你在那一行有category......无论如何使用Object.keys(this.objectFromArray[0])可能是朝着你想要实现的目标迈出的一步跨度>

标签: javascript arrays if-statement key key-value


【解决方案1】:

由于非category 属性具有一致的格式(num#,对吗?至少通过 the prior question),如果您想找到 not 开头的键num,可以用Object.keys得到一个key数组,然后.find匹配条件的key:

const animalsAndFruits = [
  {
    "category": "Apple",
    "num1": 1287,
    "num2": 12956
  },
  {
    "category": "Panda",
    "num1": 2574,
    "num2": 25826
  },
];

const propertyName = Object.keys(animalsAndFruits[0]).find(
  key => !key.startsWith('num')
);
console.log(propertyName);

如果您碰巧能够依赖非num 键始终是对象中定义的第一个键,您也可以使用Object.keys(animalsAndFruits[0])[0]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多