你不知道的js中对象,数组互相转换

       今天在做对象和JSON的课后左右时,有一道题想了很久,没有思路,然后看了答案,又查看了相关资料,突然豁然明朗。现在稍微做总结。

        题目:

     

  •  拿到题目的思路,一开始做题思路有三点:

      (1)使用for-in循环遍历

        (2) 将对象转换为数组

        (3) 使用arr.join('&')进行字符串拼接。

        第一步和第三步比较好实现,主要是卡在第二步,将对象转换为数组,如何引用呢?有以下两种方法:  

  1. 使用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://xiedaimala.com/tasks/042f7b83-ca22-4d0f-ae82-a338fa6bec8a/quizzes/c2532a6c-02aa-484b-a796-35336e9f0a55

                       https://blog.csdn.net/weixin_41534645/article/details/80379243

猜你喜欢

转载自www.cnblogs.com/mernva/p/12769920.html