关于Object.keys()、Object.values()、Object.entries()的基本使用。

310 阅读3分钟

作用:把一个对象的数据转换为数组。

基本使用方法:

  • Object.keys(obj)——返回一个包含该对象所有的键的数组。(注:返回的为字符串数组。)
  • Object.values(obj)——返回一个包含该对象所有的值的数组。
  • Object.entries(obj)——返回一个包含该对象所有[key,value]键值对的数组。
  • 前提:最后注意:所有的值前提条件都是可枚举的

举例方法的使用:

一、Object.keys()的使用:

1、Object.keys()处理对象数据时:返回可枚举的键组成的数组。
        //声明一个对象,
        let stu = {
            name: '小红',
            age: 18,
            grade: 7
        }
        //利用Object.keys();返回一个包含对象中所有的键的数组。
        let key = Object.keys(stu);
        console.log(key);               //打印出的结果为  ['name' ,'age' ,'grade']

        //利用toString.call()方法来判断返回的值为数组 
        console.log(toString.call(key)); //打印出的结果为 [object Array]
        key.forEach((item) => {
            console.log(item);         //打印出的结果为  name,  age,  class
            console.log(stu[item]);    //打印出的结果为  小红,  18,   7
        })
        
2、Object.keys()处理数组数据时:返回索引值数组,
        //创建一个数组
        let arr = ['张三', '李四', '王五', '老六']
        let key = Object.keys(arr);
        console.log(key);               //打印出的结果为  ['0','1','2','3']
        
        console.log(toString.call(arr[0]))  //打印出的结果为 [object String]
        
        //利用toString.call()方法来判断返回的值为数组 
        console.log(toString.call(key)); //打印出的结果为 [object Array]
        
        key.forEach((item) => {
            console.log(item);         //打印出的结果为  0 ,1 , 2 , 3
            console.log(arr[item]);    //打印出的结果为  张三 、李四 、王五 、老六
        })

注:当我通过toString.call()方法判断返回的数组中值的类型时返回的为字符串类型。

3、Object.keys()处理字符串数据时:返回索引值数组.
        //创建一个字符串数据
        let str = 'nihao'
        let key = Object.keys(str);
        console.log(key);               //打印出的结果为  ['0','1','2','3','4']
        //利用toString.call()方法来判断返回的值为数组 
        console.log(toString.call(key)); //打印出的结果为 [object Array]
        key.forEach((item) => {
            console.log(item);         //打印出的结果为  0 ,1, 2, 3, 4
            console.log(str[item]);    //打印出的结果为  n, i, h, a, o
        })

二、Object.values()的使用;

1、Object.values()处理对象数据时;返回可枚举的值组成的数组
        //声明一个对象,
        let stu = {
            name: '小红',
            age: 18,
            grade: 7
        }
        //利用Object.values(); 返回一个对象中包含所有的值的数组
        let value = Object.values(stu)
        console.log(value)                 //打印结果为 ['小红',18,7]
        console.log(toString.call(value))  //打印出的结果为[object Array]
2、Object.valuse()处理数组对象数据时;返回原数组.
        let arr = ['张三', '李四', '王五', '老六']
        let value = Object.values(arr)
        console.log(value)                 //打印结果为 ['张三','李四','王五','老六']
        console.log(toString.call(value))  //打印出的结果为[object Array]
3、Object.values()处理字符串数据时:返回单个字符组成的数组。
        let str = 'nihao'
        let value = Object.values(str)
        console.log(value)                 //打印结果为 ['n','i','h','a','o']
        console.log(toString.call(value))  //打印出的结果为[object Array]

三、Object.entires()的使用:

1、Object.entires()处理对象数据时;返回包含每个键和值组成的数组的数组
        //声明一个对象,
        let stu = {
            name: '小红',
            age: 18,
            grade: 7
        }

        //利用Object.entires();来获取一个包含key,value的数组
        let entires = Object.entries(stu)
        console.log(entires)
        console.log(toString.call(entires))

打印效果如图:

image.png

2、Object.entires()处理数组数据时,返回包含索引值和对应值组成的数组的数组。
        let arr = ['张三', '李四', '王五', '老六']
        //利用Object.entires();来获取一个包含key,value的数组
        let entires = Object.entries(arr)
        console.log(entires)
        console.log(toString.call(entires))

打印效果如图:

image.png

3、Object.entires()处理字符串数据时,返回包含索引值和对应的单个字符组成的数组的数组。
        let str = 'nihao'
        //利用Object.entires();来获取一个包含key,value的数组
        let entires = Object.entries(str)
        console.log(entires)
        console.log(toString.call(entires))

打印效果如图:

image.png

总结

这里特地记录下Object.key() 、Object.values()的基本使用方法,方便在工作中使用Object.key() 、Object.values()会根据对象类型的不同返回不同的参数,特别需要注意的是它们都是返回的数组形式,Object.key()返回的是字符串形式的数组。