问题描述:
有时候后端传给前端的数据格式不是我们想要的,需要自己处理一下数据。
后端传的:{aaa: "one" ,bbb: "two" ,ccc: "three" },需要将这个对象改成一组键和值成为一个数组,这个时候就可以用Object.entries(),例如:
let obj1={aaa: "one" ,bbb: "two" ,ccc: "three" }
let obj2=Object.entries(obj1);//obj2:[["aaa", "one"],["bbb", "two"],["ccc", "three"]]
借此总结Object.values、Object.entries、Object.fromEntries:
Object.entries:
定义:以数组形式返回给定对象可枚举属性的 [键:值],
如:[ [键1,值1],[键2,值2],[键3,值3],[键4,值4] ]
举例:
//对象=》数组
let obj1 = {one:'a',two:'b',three:'c'};
Object.entries(obj1); // [["one", "a"],["two", "b"],["three", "c"]]
//对象=》数组,键为数字的对象, 会按照数字键的顺序输出
let obj2 = {1:'one',3:'three',2:'two'};
Object.entries(obj2); //[["1", "one"],["2", "two"],["3", "three"]]
//数组=》数组,js会把数组['1','2','3']当作含数字键的对象{0:'1',1:'2','2','3'}
let obj3 = ['1','2','3'];
Object.entries(obj3); // [["0", "1"],["1", "2"],["2", "3"]]
//字符串=》数组
Object.entries('abcd'); // [["0", "a"],["1", "b"],["2", "c"],["3", "d"]]
Object.fromEntries():
就是Object.entries()的反向操作,
定义:将 [ [键1,值1],[键2,值2],[键3,值3],[键4,值4] ]
转为 { 键1:值1,键2:值2,键3:值3,键4:值4 }
举例:
//对象=》数组
Object.fromEntries([["one", "a"],["two", "b"],["three", "c"]]);
//{one: "a", two: "b", three: "c"}
//对象=》数组,键为数字的对象, 会按照数字键的顺序输出
Object.fromEntries([["1", "one"],["2", "two"],["3", "three"]]);
//{1: "one", 2: "two", 3: "three"}
//数组=》数组,js会把数组['1','2','3']当作含数字键的对象{0:'1',1:'2',2:'3'}
Object.fromEntries([["0", "1"],["1", "2"],["2", "3"]]);
//{0: "1", 1: "2", 2: "3"}
//字符串=》数组,js会把字符串abc当作含数字键的对象{0:'a',1:'b',2:'c'}
Object.fromEntries([["0", "a"], ["1", "b"], ["2", "c"], ["3", "d"]]);
//{0: "a", 1: "b", 2: "c", 3: "d"}
Object.values():
定义:以数组形式返回给定对象可枚举属性的值,如:[ 值1,值2,值3,值4 ]
举例:
//对象=》数组
let obj1 = {one:'a',two:'b',three:'c'};
Object.values(obj1); // ["a", "b", "c"]
//对象=》数组,键为数字的对象 会按照数字键的顺序输出
let obj2 = {1:'one',3:'three',2:'two'};
Object.values(obj2); // ["one", "two", "three"]
//数组=》数组
let obj3 = ['1','2','3'];
Object.values(obj3); // ["1", "2", "3"]
//字符串=》数组
Object.values('abcd'); // ["a", "b", "c", "d"]