javascript - 将数组转换为具有键/值对的对象

标签 javascript arrays reactjs object

我仍在学习 JavaScript,所以如果这看起来是一个补救性问题,我提前道歉。

我正在以数组的形式从 API 调用接收数据,如下所示:

arr = ['topic1',497,'topic2',591,'topic3',17,'topic4',980]

虽然从数组中看不出来,但每个主题字符串后面的数字是前一个主题的计数。

我想在 React 应用程序中使用这些数据,即将其映射到表格或其他数据结构。但是当值像这样匿名时,这就非常困难了。

所以,我想获取这个数组并将其转换为具有键/值对的对象。所以,在处理了某种循环/过滤器/ map /等之后。在阵列上,我需要结束这个:

newArr = [
  {topic: 'topic1', count: 497},
  {topic: 'topic2', count: 591},
  {topic: 'topic3', count: 17},
  {topic: 'topic4', count: 980},
]

我已经尝试了很多技术,从使用字典、 map 、 map 、过滤器、forEach、for ... in,到现在我还记得的更多技术。是的,我搜索了很多网页和论坛。问题是,我的问题包含了一些 JavaScript 的构建 block ,所以我找到的答案对于我的问题来说从来都不够具体。

我确实成功过滤掉了数组中的偶数和奇数元素,像这样:

let x = arr.filter((element, index) => {
  return index % 2 === 0; filter elements located at an even index
});

let y = arr.filter((element, index) => {
  return index % 2 === 1; filter elements located at an odd index
});

但是我从来没有成功得到我需要的结果。谁能帮我指出正确的方向?

我正在使用 React,所以请随意建议现代 JS 技术。谢谢!

最佳答案

您需要遍历 API 响应并从数组构建对象。

let objectArray = []

for(let i = 0; i < arr.length - 1; i+=2){
    objectArray.push({"topic": arr[i], "count": arr[i+1]})
}

我确信有一种更简单的方法可以做到这一点,但这将为您提供所需的东西。

在 jsFiddle 上查看它的运行情况:https://jsfiddle.net/L6023fn6/1/

关于javascript - 将数组转换为具有键/值对的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011784/

相关文章:

javascript - 使用 Javascript 判断 CSS 类是否存在

javascript - 将 PDFObject 与 PDF.js 一起使用时隐藏打印按钮

javascript - 如何将javascript变量传递给服务器端asp.net

java - 展平不均匀数组 - 越界异常错误

java - java中如何将爬取的数据存储到sql数据库中

javascript - 在 React 中提交表单后,状态已清除,但输入字段文本未显示

javascript - jquery ajax字符限制

arrays - 如何在二维数组中找到总和最大的元素?

javascript - React js动态更改元标记

javascript - 从 React Hook useEffect 内部对 'timeInterval' 变量的赋值将在每次渲染后丢失