返回
用30秒看懂127个实用的JavaScript代码片段(二)
前端
2024-01-06 00:47:46
## **22. 展平多维数组**
通过递归的形式,将多维数组展平成一维数组。
```javascript
const flatten = (arr) => {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flatten(arr[i]));
} else {
result.push(arr[i]);
}
}
return result;
};
const multidimensionalArray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
const flattenedArray = flatten(multidimensionalArray);
console.log(flattenedArray); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
## **23. 去除对象中的重复属性**
去重对象的属性,如果对象中含有重复的属性,以前面的属性值为准。
```javascript
const removeDuplicateProperties = (obj) => {
const seen = {};
const result = {};
for (let key in obj) {
if (!seen[key]) {
seen[key] = true;
result[key] = obj[key];
}
}
return result;
};
const objectWithDuplicateProperties = {
name: 'John Doe',
age: 30,
name: 'Jane Doe',
city: 'New York'
};
const objectWithoutDuplicateProperties = removeDuplicateProperties(objectWithDuplicateProperties);
console.log(objectWithoutDuplicateProperties); // { name: 'John Doe', age: 30, city: 'New York' }
```
## **24. 获取数组中最大的数字**
获取数组中最大的数字,如果数组为空或不包含任何数字,则返回undefined。
```javascript
const max = (arr) => {
if (arr.length === 0 || !arr.every(Number.isFinite)) {
return undefined;
}
let maxNumber = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > maxNumber) {
maxNumber = arr[i];
}
}
return maxNumber;
};
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const largestNumber = max(numbers);
console.log(largestNumber); // 9
```
## **25. 获取数组中最小的数字**
获取数组中最小的数字,如果数组为空或不包含任何数字,则返回undefined。
```javascript
const min = (arr) => {
if (arr.length === 0 || !arr.every(Number.isFinite)) {
return undefined;
}
let minNumber = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < minNumber) {
minNumber = arr[i];
}
}
return minNumber;
};
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const smallestNumber = min(numbers);
console.log(smallestNumber); // 1
```
## **26. 检查数组是否包含某个元素**
检查数组是否包含某个元素,如果包含则返回true,否则返回false。
```javascript
const includes = (arr, element) => {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === element) {
return true;
}
}
return false;
};
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const element = 5;
const isElementPresent = includes(numbers, element);
console.log(isElementPresent); // true
```
## **27. 随机打乱数组**
随机打乱数组的元素顺序,但不改变数组的长度。
```javascript
const shuffle = (arr) => {
for (let i = 0; i < arr.length; i++) {
const randomIndex = Math.floor(Math.random() * arr.length);
const temp = arr[i];
arr[i] = arr[randomIndex];
arr[randomIndex] = temp;
}
return arr;
};
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const shuffledNumbers = shuffle(numbers);
console.log(shuffledNumbers); // [9, 2, 8, 6, 4, 5, 3, 7, 1]
```