如何使用JavaScript将键值对字符串数组转换为目标对象?
把键值对字符串数组转为对象的几种实现方式
嘿,这个需求其实很常见,我给你分享几种实用的实现方法,都能完美得到你想要的对象结构:
方法一:用 Object.fromEntries(ES6+ 最简洁写法)
这是ES6之后新增的API,专门用来把键值对数组转成对象,代码非常简洁:
let array = [ "Social Network: 1", "Tasks: 1", "Calendar: 1", "Journal: 1", "Business Contact Manager: 2" ]; const result = Object.fromEntries( array.map(item => { // 按": "拆分键和值,注意冒号后面有空格 const [key, value] = item.split(': '); // 把值转成数字类型 return [key, Number(value)]; }) ); console.log(result); // 输出:{ "Social Network": 1, "Tasks": 1, "Calendar": 1, "Journal": 1, "Business Contact Manager": 2 }
方法二:用数组的 reduce 方法(经典通用写法)
reduce 是处理数组转对象的经典工具,适合理解底层逻辑:
let array = [ "Social Network: 1", "Tasks: 1", "Calendar: 1", "Journal: 1", "Business Contact Manager: 2" ]; const result = array.reduce((obj, item) => { const [key, value] = item.split(': '); obj[key] = Number(value); return obj; }, {}); // 初始值是空对象 console.log(result);
方法三:用 forEach 循环(最直观的新手友好写法)
如果你刚接触JS,forEach的写法更直白,容易理解:
let array = [ "Social Network: 1", "Tasks: 1", "Calendar: 1", "Journal: 1", "Business Contact Manager: 2" ]; const result = {}; array.forEach(item => { const [key, value] = item.split(': '); result[key] = Number(value); }); console.log(result);
注意点
- 拆分字符串的时候一定要用
': '(冒号加空格),如果只用冒号的话,键的末尾会多一个空格,导致对象键名错误。 - 一定要把拆分出来的
value转成数字类型,不然默认会是字符串,不符合你想要的结果。
内容的提问来源于stack exchange,提问作者New123
相关产品推荐
相关产品推荐

