开发者问题收集

索引数组仅返回“[”

2023-02-25
76

我有一些数据,它们是数组的数组,每个子数组的长度为 1,并且该数组中的唯一项是具有键值对的对象。例如:

const array = [[{'city': 'new york', 'state': 'ny'}], [{'city': 'dallas', 'state': 'tx'}], ,[{'city': 'los angeles', 'state': 'ca'}]]

我试图循环遍历这个数组并仅提取城市。我可以通过运行来做到这一点

array.forEach(item => console.log(item[0].city))

但是,当我对我的实际数据(不幸的是我无法分享)尝试此操作时,我收到错误

TypeError: Cannot read properties of undefined (reading 'city')

当我尝试运行

array.forEach(item => console.log(item[0]))

唯一返回的是一堆 [ ,加上一个空白条目的 undefined

如果它是相关的,我尝试索引的实际数据是从 Google Sheet 中提取的一列。

有人知道为什么我无法正确遍历我的数据以及任何可能的解决方案吗?

编辑:

正如 Parvez 指出的那样,我的数组是从数据中提取的字符串数组,而不是数组数组。这意味着我的数据实际上看起来像

const array = ["[{'city': 'new york', 'state': 'ny'}]", "[{'city': 'dallas', 'state': 'tx'}]", "","[{'city': 'los angeles', 'state': 'ca'}]"]

如果有人对如何处理这些子数组有任何建议,以便我可以提取相关数据,我将不胜感激。

2个回答

我的答案:

546606879

希望对您有帮助。

tzztson
2023-02-25

它返回 [ 数组的一个原因可能是因为外部数组内的每个元素都是这样的字符串:

const array = [
  "[{'city': 'new york', 'state': 'ny'}]",
  "[{'city': 'dallas', 'state': 'tx'}]",
  "",
  "[{'city': 'los angeles', 'state': 'ca'}]"
];

这就是为什么 array.forEach(item => console.log(item[0].city)) 给出错误并且 array.forEach(item => console.log(item[0])) 给出一个奇怪的数组的原因。

--编辑--

如果字符串采用 JSON 兼容格式,则解析它变得很容易,如下所示:

const newArray = array.map(data => JSON.parse(data));

然后您应该能够轻松访问 city state 键。

如果数据不是 JSON 兼容格式,则您有 2选项:

  1. 修改此数据的来源(API 或您从中获取数据的任何地方)以使其采用 JSON 兼容格式。然后,您可以使用上述技术。(推荐)
  2. 您是一个实用程序函数,它以字符串形式接受数据,对其进行解析,然后根据所需键返回值
Parvez
2023-02-25