### 数组转对象
- **使用`reduce`方法**:可以将数组中每个对象的特定属性分别作为对象的键和值。示例代码如下:
```javascript
const arr = [{ label: '男', value: 0 }, { label: '女', value: 1 }];
let res = arr.reduce((result, item) => {
return { ...result, [item.value]: item.label };
}, {});
console.log(res);
```
此代码通过`reduce`方法将数组`arr`转换为对象,其中数组元素的`value`属性作为对象的键,`label`属性作为对象的值[^2]。
- **使用`Object.fromEntries`方法**:当数组元素是包含两个元素的子数组时,可使用该方法将其转换为对象。示例代码如下:
```javascript
const arr = [['a', 1], ['b', 2], ['c', 3]];
const obj = Object.fromEntries(arr);
console.log(obj); // {a: 1, b: 2, c: 3}
```
此代码使用`Object.fromEntries`方法将数组`arr`转换为对象,子数组的第一个元素作为对象的键,第二个元素作为对象的值[^3]。
- **使用`forEach`方法**:遍历数组,将数组元素的索引和值分别作为对象的键和值。示例代码如下:
```javascript
const arr = [1, 2, 3, 4, 5];
let obj = {};
arr.forEach((item, index) => {
obj[index] = item;
});
console.log(obj); // {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
```
此代码通过`forEach`方法将数组`arr`转换为对象,数组元素的索引作为对象的键,元素值作为对象的值[^3]。
### 对象转数组
- **使用`Object.entries`方法**:将对象的键值对转换为包含两个元素的子数组组成的数组。示例代码如下:
```javascript
const obj = { a: 1, b: 2, c: 3 };
const arr = Object.entries(obj);
console.log(arr); // [['a', 1], ['b', 2], ['c', 3]]
```
此代码使用`Object.entries`方法将对象`obj`转换为数组,对象的键值对转换为子数组,子数组的第一个元素是键,第二个元素是值[^3]。
- **使用`Object.keys`和`forEach`方法**:通过`Object.keys`获取对象的键,再使用`forEach`遍历键,将键和对应的值组合成对象添加到数组中。示例代码如下:
```javascript
const obj = { 0: '男', 1: '女' };
function f(obj) {
const arr = [];
Object.keys(obj).forEach(item => {
arr.push({ label: obj[item], value: item });
});
return arr;
}
console.log(f(obj));
```
此代码先使用`Object.keys`获取对象`obj`的键,再通过`forEach`遍历这些键,将键和对应的值组合成新对象添加到数组中,最终返回转换后的数组[^2]。
- **对象转数组对象**:可以将对象的属性扩展到一个新对象中,并添加到数组里。示例代码如下:
```javascript
let obj = { id: 1, name: "aaa", age: 18 };
let arr = [];
arr.push({ ...obj });
console.log(arr); // [{id: 1, name: "aaa", age: 18}]
```
此代码将对象`obj`的属性扩展到一个新对象中,并添加到数组`arr`中,实现对象转数组对象[^1]。