今天在做对象和JSON的课后左右时,有一道题想了很久,没有思路,然后看了答案,又查看了相关资料,突然豁然明朗。现在稍微做总结。
题目:
- 拿到题目的思路,一开始做题思路有三点:
(1)使用for-in循环遍历
(2) 将对象转换为数组
(3) 使用arr.join('&')进行字符串拼接。
第一步和第三步比较好实现,主要是卡在第二步,将对象转换为数组,如何引用呢?有以下两种方法:
- 使用object.keys(obj)将对象转变为数组。使用map()遍历数组,回调函数即代码中的箭头函数组成一个新数组返回,新数组索引结构和原数组一致。
let obj = { name: 'jirengu', age: 5 } let result = traverse(obj) //输出 "name=jirengu&age=5" console.log(result) //在答案区实现这个函数 function traverse(obj) { return Object.keys(obj).map(key => `${key} =${obj[key]}`).join('&') }
2.使用for-in循环,通过arr.push()分别将key:value添加到数组中。
let obj = { name: 'jirengu', age: 5 } let result = traverse(obj) //输出 "name=jirengu&age=5" console.log(result) //在答案区实现这个函数 function traverse(obj) { let arr =[] for(let key in obj){ arr.push(key+'='+obj[key]) } return arr.join('&') }
- 总结:常见的数组转换为对象方法:
- 1.Object.keys(obj)及Object.values(obj)分别将对象的属性及属性值转换为数组
-
let obj = { name: 'jirengu', age: 5 } console.log(Object.keys(obj))
console.log(Object.values(obj))2.使用for-in循环构建函数
let obj = { name: 'jirengu', age: 5 } let res1 =objectValue(obj) let res2 =objectKey(obj) function objectValue(obj){ let arr1 =[] for(let key in obj){ arr1.push(obj[key]) } console.log(arr1) } function objectKey(obj){ let arr2 = [] for(let key in obj){ arr2.push(key) } console.log(arr2) }
3.使用Object.entries(obj)返回给定对象可枚举属性键值对数组
-
let obj = { name: 'jirengu', age: 5 } console.log(Object.entries(obj))
https://blog.csdn.net/weixin_41534645/article/details/80379243