跳到主要内容

数组

数组去重

// 笨方法
const arr = [1, 1, 2, 5, 2, 6, 8];
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (newArr.includes(arr[i])) {
continue;
}
newArr.push(arr[i]);
}

数组填充

new Array(10).fill(1);

Array.from({ length: 10 }, item => 1);

数组扁平化

// Array.prototype.flat([depth])
let arr = [1, 2, 7, [2, [2, 3], 6]];

console.log(arr.flat(Infinity));

求数组最大值

const arr = [1, 2, 1, 4, 2, 10];
console.log(Math.max.apply(null, arr));
const arr = [1, 2, 1, 4, 2, 10];
console.log(arr.sort((a, b) => a - b)[arr.length - 1]);
const arr = [1, 2, 1, 4, 2, 10];
console.log(Math.max(...arr));

字符数组排序

const arr1 = ['A1', 'A2', 'B1', 'B2'];
const arr2 = ['A', 'B'];

const c = [...arr1, ...arr2].sort(
(a, b) =>
a.charCodeAt(0) - b.charCodeAt(0) || a.length - b.length || a.charCodeAt(1) - b.charCodeAt(1)
);

// ['A', 'A1', 'A2', 'B', 'B1', 'B2']

对象数组排序

const users = [
{
name: 'Alan',
age: 19
},
{
name: 'Bob',
age: 25
}
];
const userList = users.sort((a, b) => b.age - a.age);
// 根据年龄进行排序,注意:sort会改变原来的数组

map 相关

const a = ['1', '2', '3'].map(parseInt);
// 数组a中的'1'转化为10进制。
console.log(a); // [1, NaN, NaN]
// map的三个参数(item,index,array)
/* parseInt(string, radix)
当radix等于0或者undefined或者没有指定时,如果string以'0x'或者''0X'开头,则radix=16
以'0'开头,根据实际情况radix=10/8。 */

// 拆解过程
parseInt('1', 0);
parseInt('2', 1);
parseInt('3', 2);