返回

手写算法精选:[12] 探索数组的奥秘—map()方法的魅力

前端

[算法 1] 构建一个平方数组

问题: 给定一个数字数组,将每个数字平方并返回一个新数组。

const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = numbers.map((number) => {
  return number * number;
});
console.log(squaredNumbers); // [1, 4, 9, 16, 25]

[算法 2] 计算数组元素的总和

问题: 给定一个数字数组,计算并返回所有元素的总和。

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.map((number) => {
  return number;
}).reduce((a, b) => a + b, 0);
console.log(sum); // 15

[算法 3] 将数组中的字符串转换为大写

问题: 给定一个字符串数组,将每个字符串转换为大写并返回一个新数组。

const strings = ['hello', 'world', 'javascript'];
const upperCaseStrings = strings.map((string) => {
  return string.toUpperCase();
});
console.log(upperCaseStrings); // ['HELLO', 'WORLD', 'JAVASCRIPT']

[算法 4] 提取数组中对象的特定属性

问题: 给定一个对象数组,提取并返回每个对象中特定属性的值。

const objects = [
  { name: 'John', age: 25 },
  { name: 'Mary', age: 30 },
  { name: 'Bob', age: 35 }
];
const ages = objects.map((object) => {
  return object.age;
});
console.log(ages); // [25, 30, 35]

[算法 5] 过滤数组中的偶数

问题: 给定一个数字数组,过滤并返回数组中所有偶数。

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const evenNumbers = numbers.filter((number) => {
  return number % 2 === 0;
});
console.log(evenNumbers); // [2, 4, 6, 8, 10]

[算法 6] 查找数组中最大的数字

问题: 给定一个数字数组,查找并返回数组中最大的数字。

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const maxNumber = numbers.reduce((a, b) => {
  return Math.max(a, b);
});
console.log(maxNumber); // 10

[算法 7] 将数组中的数字转换为字符串

问题: 给定一个数字数组,将每个数字转换为字符串并返回一个新数组。

const numbers = [1, 2, 3, 4, 5];
const stringNumbers = numbers.map((number) => {
  return number.toString();
});
console.log(stringNumbers); // ['1', '2', '3', '4', '5']

[算法 8] 检查数组中是否存在特定元素

问题: 给定一个数组和一个元素,检查数组中是否存在该元素并返回布尔值。

const numbers = [1, 2, 3, 4, 5];
const element = 3;
const exists = numbers.some((number) => {
  return number === element;
});
console.log(exists); // true

[算法 9] 删除数组中的重复元素

问题: 给定一个数组,删除其中的重复元素并返回一个新数组。

const numbers = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]

[算法 10] 将数组分为奇数和偶数子数组

问题: 给定一个数字数组,将其分为奇数和偶数两个子数组并返回。

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const oddEvenArrays = numbers.reduce((acc, number) => {
  const isEven = number % 2 === 0;
  acc[isEven ? 'even' : 'odd'].push(number);
  return acc;
}, { odd: [], even: [] });
console.log(oddEvenArrays); // { odd: [1, 3, 5, 7, 9], even: [2, 4, 6, 8, 10] }