对象,数组之间的转换

147 阅读2分钟

一:数组转化为对象

1:for循环

const arr = ["name", "age", "gender"];
const obj = {};
for(let i=0; i<arr.length; i++) {
  obj[arr[i]] = "";
}
console.log(obj); 
// 输出:{name:"", age:"", gender:""}

2:forEach方法

const arr = ["name", "age", "gender"];
const obj = {};
arr.forEach(item => {
  obj[item] = "";
})
console.log(obj);
// 输出:{name:"", age:"", gender:""}

3:Object.fromEntries() //es6新特性

Object.fromEntries()方法接受一个可迭代的对象,将其转换成一个对象。

const arr = [  ["name", "Tom"],
  ["age", 18],
  ["gender", "male"]
];
const obj = Object.fromEntries(arr);
console.log(obj);
// 输出:{name: "Tom", age: 18, gender: "male"}

4: Array.prototype.reduce()

reduce()方法可以快速地将一个数组转换成一个对象,它接受一个回调函数和一个初始值,将数组中的每一个元素和初始值进行运算后返回新的结果。

const arr = [
  {name: "Tom", age: 18},
  {name: "Jerry", age: 20},
  {name: "Bob", age: 22}
];
const obj = arr.reduce((result, item) => {
  result[item.name] = item.age;
  return result;
}, {})
console.log(obj);
// 输出:{Tom: 18, Jerry: 20, Bob: 22}

5:JSON.parse() , JSON.stringify() 和 Object.assign()

const str = '{"name": "Tom", "age": 18}';
const obj = JSON.parse(str);
console.log(obj);
// 输出:{name: "Tom", age: 18}

Object.assign()方法可以将多个对象合并成一个新对象。

const obj1 = {name: "Tom"};
const obj2 = {age: 18};
const obj = Object.assign({}, obj1, obj2);
console.log(obj);
// 输出:{name: "Tom", age: 18}

二:对象转化为数组

1; Object.keys()

Object.keys()方法返回一个由对象的属性组成的数组,其中的属性为对象本身的可枚举属性,但不包含它的原型链上的属性。

const obj = { a: 1, b: 2, c: 3 };
const arr = Object.keys(obj);
console.log(arr); // 输出 ["a", "b", "c"]

2:Object.values()

Object.values()方法返回一个由对象的属性值组成的数组,其中的属性值为对象本身的可枚举属性值,但不包含它的原型链上的属性值。

const obj = { a: 1, b: 2, c: 3 };
const arr = Object.values(obj);
console.log(arr); // 输出 [1, 2, 3]

3: Object.entries()

Object.entries()方法返回一个由对象的键值对组成的数组,其中的键值对为对象本身的可枚举键值对,但不包含它的原型链上的键值对。

const obj = { a: 1, b: 2, c: 3 };
const arr = Object.entries(obj);
console.log(arr); // 输出 [["a", 1], ["b", 2], ["c", 3]]

4: Array.from()

Array.from()方法从一个类似数组或可迭代对象中创建一个新的数组实例,将对象转换为数组。这个方法的第二个参数可以作为映射函数,可对数组中的每个元素进行处理并返回新的元素值。

5: 手动转换

const obj = { a: 1, b: 2, c: 3 };
const arr = [];
for (const key in obj) {
  arr.push(obj[key]);
}
console.log(arr); // 输出 [1, 2, 3]