pat*_*krs 5 javascript arrays object reactjs
我仍在学习 JavaScript,所以如果这看起来是一个补救性问题,我提前道歉。
我以数组的形式从 API 调用接收数据,如下所示:
arr = ['topic1',497,'topic2',591,'topic3',17,'topic4',980]
Run Code Online (Sandbox Code Playgroud)
尽管从该数组中看不出来,但每个主题字符串后面的数字是前一个主题的计数。
我想在 React 应用程序中使用这些数据,即将其映射到表或其他数据结构。但当这些值像这样匿名时,这就非常困难了。
所以,我想获取这个数组并将其转换为具有键/值对的对象。因此,在进行某种循环/过滤器/映射/等工作之后。在数组上,我需要这样结束:
newArr = [
{topic: 'topic1', count: 497},
{topic: 'topic2', count: 591},
{topic: 'topic3', count: 17},
{topic: 'topic4', count: 980},
]
Run Code Online (Sandbox Code Playgroud)
我尝试过很多技术,包括使用字典、地图、地图、过滤器、forEach、for ... in,以及比我现在记得的更多的技术。是的,我搜索了很多网页和论坛。问题是,我的问题包括 JavaScript 的一些基本构建块,因此我找到的答案对于我的问题来说不够具体。
我确实成功过滤掉了数组中的偶数和奇数元素,如下所示:
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
});
Run Code Online (Sandbox Code Playgroud)
但我从来没有成功地得到我需要的结果。有人可以帮我指出正确的方向吗?
我正在使用 React,所以请随意建议现代 JS 技术。谢谢!
您需要循环访问 API 响应并从数组构建对象。
let objectArray = []
for(let i = 0; i < arr.length - 1; i+=2){
objectArray.push({"topic": arr[i], "count": arr[i+1]})
}
Run Code Online (Sandbox Code Playgroud)
我确信有一种更简单的方法可以做到这一点,但这将满足您的需求。
在 jsFiddle 上查看它的实际效果:https ://jsfiddle.net/L6023fn6/1/
| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |