Object.keys 在我的代码中没有正确打印

分享于2022年07月17日 angular javascript json typescript 问答
【问题标题】:Object.keys 在我的代码中没有正确打印(Object.keys not printing properly in my code)
【发布时间】:2022-01-26 22:24:03
【问题描述】:

我试图只从对象中获取键,但我得到 0 1 2 3 作为输出。

下面是我的代码

data = {"property" : "{\"animalID\": \"12345\", \"animalNumber\" : \"789\", \"type\" : \"mamal\"}"}

onCLick() {
  const dataOne = (JSON.parse(JSON.stringify(this.data)));
  console.log("data", Object.keys(dataOne.property));
}

下面是当前的输出,是错误的。

数据 (61) ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10 ','11','12','13','14','15','16','17','18','19','20','21','22', '23'、'24'、'25'、'26'、'27'、'28'、'29'、'30'、'31'、'32'、'33'、'34'、'35 ','36','37','38','39','40','41','42','43','44','45','46','47', “48”、“49”、“50”、“51”、“52”、“53”、“54”、“55”、“56”、“57”、“58”、“59”、“60” ']

试图实现这样的目标

const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};

console.log(Object.keys(object1));
// expected output: Array ["a", "b", "c"]

  • 您的数据格式不正确,字符串化对象中缺少 } 作为属性键的值。
  • 打印 0,1... 的原因是因为您的 dataOne.property 是字符串并且它正在打印它的所有索引。
  • @CodeManiac,对不起,我在复制时离开了 },我现在已经正确复制了。能否请您告诉我获取密钥的解决方案是什么?
  • 需要解析属性键的值,即 Object.keys(JSON.parse(dataOne.property))
  • 使用 Object.keys(JSON.parse(dataOne.property)) 而不是 Object.keys(dataOne.property) ,因为 dataOne.property 是一个字符串。

【解决方案1】:

您需要将 JSON 字符串解析为 object ,如下所示:

data = {"property" : "{\"animalID\": \"12345\", \"animalNumber\" : \"789\", \"type\" : \"mamal\"}"};

const dataOne = JSON.parse(data["property"]);
console.log("data", Object.keys(dataOne));