我仍在学习 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/