# 数组操作

执行下面的代码，循环打印数组中所有元素。

```javascript
let arr = [233, 6.66, 'Hello World!', false];
console.log(arr);
for (let i = 0; i < arr.length; i++) {
	console.log(arr[i]);
}
arr.forEach(function (ele, index) {
	console.log(index, ele);
});
for (let k in arr) {
	console.log(k);
}
for (let v of arr) {
	console.log(v);
}
```

执行下面的代码，向数组末尾添加新的元素。

```javascript
let arr = [233, 6.66, 'Hello World!', false];
console.log(arr);
arr.push('123.456', 'Hello JavaScript!');
console.log(arr);
```

执行下面的代码，向数组开头添加新的元素。

```javascript
let arr = [233, 6.66, 'Hello World!', false];
console.log(arr);
arr.unshift('123.456', 'Hello JavaScript!');
console.log(arr);
```

执行下面的代码，删除数组中最后一个元素。

```javascript
let arr = [233, 6.66, 'Hello World!', false];
console.log(arr);
console.log(arr.pop());
console.log(arr);
```

执行下面的代码，删除数组中第一个元素。

```javascript
let arr = [233, 6.66, 'Hello World!', false];
console.log(arr);
console.log(arr.shift());
console.log(arr);
```

执行下面的代码，查找数组中的指定元素。

```javascript
let arr = [233, 6.66, 'Hello World!', false];
console.log(arr.indexOf(6.66));
console.log(arr.includes(false));
```

执行下面的代码，截取数组中指定下标的元素。

```javascript
let arr = [233, 6.66, 'Hello World!', false];
console.log(arr);
console.log(arr.slice(1, 4));
```

执行下面的代码，遍历数组处理数据并返回新的数组。

```javascript
const arr1 = [1, 2, 3];
const arr2 = arr1.map(function(ele, index) {
    console.log(index, ele);
    return ele * 2;
});
console.log(arr1);
console.log(arr2);
```

执行下面的代码，将数组中所有元素转换为字符串。

```javascript
const arr = [1, 2, 3];
const str = arr.join();
console.log(arr);
console.log(str);
```

执行下面的代码，合并两个数组。

```javascript
const arr1 = [233, 666];
const arr2 = ['Hello', 'JavaScript'];
console.log(arr1.concat(arr2));
console.log([...arr1, ...arr2]);
```

执行下面的代码，将多维数组降维为一维数组。

```javascript
const arr1 = [1, 2, 3, [4, 5, 6]];
console.log(arr1.flat());
const arr2 = [1, 2, 3, [4, 5, 6, [7, 8]]];
console.log(arr2.flat(2));
const arr3 = [1, 2, 3, [4, 5, 6, [7, 8, [9, [10]]]]];
console.log(arr3.flat(Infinity));
```

执行下面的代码，对数组进行去重操作。

```javascript
const arr = [233, 666, 1.23, 233, 666];
console.log(arr);
let result = new Set(arr);
console.log([...result]);
```

执行下面的代码，求两个数组的并集。

```javascript
const arr1 = [1, 2, 3, 4, 5, 4, 3, 2, 1];
const arr2 = [4, 5, 6, 5, 4];
let result = new Set([...arr1, ...arr2]);
console.log(result);
```

执行下面的代码，求两个数组的交集。

```javascript
const arr1 = [1, 2, 3, 4, 5, 4, 3, 2, 1];
const arr2 = [4, 5, 6, 5, 4];
const set1 = new Set(arr1);
const set2 = new Set(arr2);
let result = [...set1].filter(item => set2.has(item));
console.log(result);
```

执行下面的代码，求两个数组的差集。

```javascript
const arr1 = [1, 2, 3, 4, 5, 4, 3, 2, 1];
const arr2 = [4, 5, 6, 5, 4];
const set1 = new Set(arr1);
const set2 = new Set(arr2);
let result = [...set1].filter(item => !set2.has(item));
console.log(result);
```

