将[ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
做扁平化处理并最终得到一个升序的不重复数组
查看详情
javascript
const arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
// 1
Array.from(new Set(arr.flat(Infinity))).sort((a, b) => a - b)
// 2
Array.from(new Set(arr.toString().split(",").map(Number))).sort((a, b) => a - b)
// 3
[...(new Set(arr.flat(Infinity)))].sort((a, b) => a - b)
将数组[5,1,3,4,2]
按升序排列
查看详情
javascript
const arr = [5, 1, 3, 4, 2];
// 轮数
for (let i = 0; i < arr.length - 1; i++) {
// 次数
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
实现数组的 reverse 方法
查看详情
javascript
function reverse(arr) {
const len = arr.length;
const middleItemIndex = Math.floor(arr.length / 2);
for (let i = 0; i < middleItemIndex; i++) {
[arr[i], arr[len - 1 - i]] = [arr[len - 1 - i], arr[i]];
}
return arr;
}
将字符串'12345'
反转
查看详情
javascript
const str = '12345';
const str1 = [...str].reverse().join('');
有一个数组,取出里边能组成三角形最长的三根
查看详情
javascript
function longestTrianglePerimeter(arr) {
// 降序排序
arr.sort((a, b) => b - a);
// 查找能组成三角形的最长周长的三根边
for (let i = 0; i < arr.length - 2; i++) {
if (arr[i] < arr[i + 1] + arr[i + 2]) {
// 找到能组成三角形的边
return [arr[i], arr[i + 1], arr[i + 2]];
}
}
// 如果没有找到能组成三角形的边,返回一个空数组
return [];
}
递归求斐波那契数列的第 n 项
查看详情
javascript
function fibonacci(n, memo = {}) {
// 检查是否在记忆表中
if (memo[n] !== undefined) {
return memo[n];
}
// 基本情况
if (n === 0) {
return 0;
} else if (n === 1) {
return 1;
} else {
// 递归情况并存储结果到记忆表中
memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
return memo[n];
}
}
获取100以内的质数
查看详情
javascript
function getPrimesUpTo(num) {
const arr = new Array(num + 1).fill(true);
arr[0] = arr[1] = false;
for (let i = 2; i * i <= num; i++) {
if (arr[i]) {
for (let j = i * i; j <= num; j +=i) {
arr[j] = false;
}
}
}
const primes = [];
for (let i = 2; i <= num; i++) {
if (arr[i]) {
primes.push(i)
}
}
return primes
}
数组随机排序
查看详情
javascript
// 1
function randomSort(arr) {
const len = arr.length
for (let i = 0; i < len; i++) {
const randomIndex = Math.floor(Math.random() * len);
[arr[i], arr[randomIndex]] = [arr[randomIndex], arr[i]];
}
return arr;
}
// 2
function randomSort(arr) {
arr.sort(() => Math.random() - 0.5);
return arr;
}
实现flatten方法
查看详情
javascript
const list = [1,2,[3,4,[5,6], 7], [8]];
// 1
function flatten(arr) {
while(arr.some((item) => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
// 2
function flatten(arr) {
return [].concat(...arr.map(item => Array.isArray(item) ? flatten(item) : item));
}
// 3
function flatten(arr) {
return arr.flat(Infinity)
}
两数之和
查看详情
javascript
function fn(arr, target) {
for (let i = 0; i < arr.length; i++) {
const targetIndex = arr.indexOf(target - arr[i]);
if (targetIndex > -1) {
return [i, targetIndex]
}
}
}