如何将指定JS字符串转换为目标JSON格式?仅用map无法实现
如何将逗号分隔的数字字符串转换为成对键值的JSON对象?
给定如下JavaScript字符串:
let str = '1,2,3,4,5,6,7,8,9,0';
需要将其转换为如下结构的JSON对象:
{ "1": "2", "3": "4", "5": "6", "7": "8", "9": "0" }
注:仅使用map函数无法解决此问题,求实现方法。
方法1:使用reduce函数
reduce是处理这类“数组转对象”场景的理想工具,先将字符串分割为数组,再按每两个元素一组构建键值对:
let str = '1,2,3,4,5,6,7,8,9,0'; const arr = str.split(','); const result = arr.reduce((acc, curr, index) => { // 仅处理偶数索引元素,将其作为键,下一个元素作为对应值 if (index % 2 === 0) { acc[curr] = arr[index + 1]; } return acc; }, {}); console.log(result); // 输出: { '1': '2', '3': '4', '5': '6', '7': '8', '9': '0' }
方法2:普通for循环遍历
如果觉得reduce不够直观,可使用步长为2的for循环直接构建对象:
let str = '1,2,3,4,5,6,7,8,9,0'; const arr = str.split(','); const result = {}; // 每次循环跳过一个元素,处理成对的键值 for (let i = 0; i < arr.length; i += 2) { result[arr[i]] = arr[i + 1]; } console.log(result);
额外说明
- 若需要将值转为数字类型,可修改赋值语句为
result[arr[i]] = Number(arr[i + 1]) - 建议提前判断原字符串分割后的数组长度是否为偶数,避免出现无对应值的键(或无对应键的值)
内容的提问来源于stack exchange,提问作者james lee
相关产品推荐
相关产品推荐

