js 三个数组 转化为一个数组对象 每一个数组代表一个键名
时间: 2024-03-20 22:44:48 浏览: 24
可以使用 JavaScript 的 `reduce()` 方法来实现将三个数组转化为一个数组对象的操作。具体实现如下:
```javascript
const keys = ['name', 'age', 'gender'];
const values1 = ['Tom', 18, 'male'];
const values2 = ['Jerry', 20, 'female'];
const values3 = ['Bob', 22, 'male'];
const result = [values1, values2, values3].reduce((acc, cur) => {
const obj = {};
keys.forEach((key, index) => {
obj[key] = cur[index];
});
acc.push(obj);
return acc;
}, []);
console.log(result);
```
其中,`keys` 数组包含了三个键名,`values1`、`values2` 和 `values3` 分别代表三个数组,`reduce()` 方法将三个数组转化为一个数组对象,`forEach()` 方法用于遍历 `keys` 数组,将当前元素作为键名,将当前数组的对应元素作为键值存储到一个对象中,最后将该对象添加到结果数组中。`reduce()` 方法返回最终的结果数组,即转化后的数组对象。
相关问题
js 三个数组 转化为一个数组对象 数组的每一项代表数组对象中的键名
可以使用 JavaScript 的 `reduce()` 方法来实现将三个数组转化为一个数组对象的操作。具体实现如下:
```javascript
const keys = ['name', 'age', 'gender'];
const values1 = ['Tom', 18, 'male'];
const values2 = ['Jerry', 20, 'female'];
const values3 = ['Bob', 22, 'male'];
const result = keys.reduce((acc, cur, index) => {
acc.push({ [cur]: [values1[index], values2[index], values3[index]] });
return acc;
}, []);
console.log(result);
```
其中,`keys` 数组包含了三个键名,`values1`、`values2` 和 `values3` 分别代表三个数组,`reduce()` 方法将三个数组转化为一个数组对象,对于每一个键名,使用对象字面量的方式创建一个键为该键名、值为一个数组的对象,并将三个数组的对应元素作为该数组的元素,最后将该对象添加到结果数组中。`reduce()` 方法返回最终的结果数组,即转化后的数组对象。
请你扮演一个资深前端,写7个js数组去重并解释
好的,以下是7个js数组去重的方法:
方法一:使用Set
```javascript
const arr = [1, 2, 3, 1, 2, 3];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3]
```
解释:Set是ES6中新增的数据结构,它可以用来存储任意类型的唯一值。使用Set去重是最简单的方法,将数组转化为Set,然后再转回数组即可。
方法二:使用indexOf
```javascript
const arr = [1, 2, 3, 1, 2, 3];
const uniqueArr = [];
arr.forEach(item => {
if (uniqueArr.indexOf(item) === -1) {
uniqueArr.push(item);
}
});
console.log(uniqueArr); // [1, 2, 3]
```
解释:使用indexOf方法判断元素是否已经存在于新数组中,不存在则将该元素推入新数组。
方法三:使用includes
```javascript
const arr = [1, 2, 3, 1, 2, 3];
const uniqueArr = [];
arr.forEach(item => {
if (!uniqueArr.includes(item)) {
uniqueArr.push(item);
}
});
console.log(uniqueArr); // [1, 2, 3]
```
解释:includes方法也可以判断元素是否已经存在于新数组中,不存在则将该元素推入新数组。
方法四:使用filter
```javascript
const arr = [1, 2, 3, 1, 2, 3];
const uniqueArr = arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
console.log(uniqueArr); // [1, 2, 3]
```
解释:filter方法可以通过回调函数过滤数组中的元素,只保留符合条件的元素。在这里,利用indexOf判断元素是否是第一次出现,是则保留。
方法五:使用reduce
```javascript
const arr = [1, 2, 3, 1, 2, 3];
const uniqueArr = arr.reduce((prev, cur) => {
if (!prev.includes(cur)) {
prev.push(cur);
}
return prev;
}, []);
console.log(uniqueArr); // [1, 2, 3]
```
解释:reduce方法可以将一个数组转化为一个值,利用它也可以实现去重。在这里,prev表示新数组,cur表示当前元素,如果新数组中不存在当前元素,则将其推入新数组。
方法六:使用Map
```javascript
const arr = [1, 2, 3, 1, 2, 3];
const uniqueArr = [];
const map = new Map();
arr.forEach(item => {
if (!map.has(item)) {
map.set(item, true);
uniqueArr.push(item);
}
});
console.log(uniqueArr); // [1, 2, 3]
```
解释:利用Map数据结构的特性,将元素作为键存储,值为true。如果新元素已经存在于Map中,则跳过;否则将其推入新数组。
方法七:使用递归
```javascript
const arr = [1, 2, 3, 1, 2, 3];
function unique(arr) {
if (arr.length === 1) {
return arr;
}
const first = arr[0];
const rest = arr.slice(1);
return unique(rest.filter(item => item !== first)).concat(first);
}
const uniqueArr = unique(arr);
console.log(uniqueArr); // [1, 2, 3]
```
解释:递归是一种非常强大的方法,虽然不如其他方法简洁,但能够解决各种问题。在这里,递归调用本身,直到数组长度为1,然后将结果拼接起来。