SOURCE

// 无论顺序如何,比较两个数组
// const isEqual = (a, b) => JSON.stringify([...new Set(a)].sort()) === JSON.stringify([...new Set(b)].sort());
// isEqual([1, 2, 3], [1, 2, 3]); // true
// isEqual([1, 2, 3], [1, 3, 2]); // true
// isEqual([1, 2, 3], [1, '2', 3]); // false
// console.log(JSON.stringify([...new Set([1, 2, '2', 3])].sort()))

// 将对象数组转换为单个对象
// const toObject = (arr, key) => arr.reduce((a, b) => ({ ...a, [b[key]]: b }), {});
// console.log(toObject(
//     [
//         { id: '1', name: 'Alpha', gender: 'Male' },
//         { id: '2', name: 'Bravo', gender: 'Male' },
//         { id: '3', name: 'Charlie', gender: 'Female' },
//     ],
//     'id'
// ))

// 将字符串数组转换为数字
// const toNumbers = (arr) => arr.map(Number);
// console.log(toNumbers(['2', '3', '4','a'])) //  [2,3,4,null]

// 按对象数组的属性进行计数
// const countBy = (arr, prop) => arr.reduce((prev, curr) => ((prev[curr[prop]] = ++prev[curr[prop]] || 1), prev), {});
// console.log(countBy(
//     [
//         { branch: 'audi', model: 'q8', year: '2019' },
//         { branch: 'audi', model: 'rs7', year: '2020' },
//         { branch: 'ford', model: 'mustang', year: '2019' },
//         { branch: 'ford', model: 'explorer', year: '2020' },
//         { branch: 'bmw', model: 'x7', year: '2020' },
//     ],
//     'branch'
// ));  // { 'audi': 2, 'ford': 2, 'bmw': 1 }

// 计算数组中指定值的出现次数
// const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
// console.log(countOccurrences([2, 1, 3, 3, 2, 3], 2)); // 2
// console.log(countOccurrences(['a', 'b', 'a', 'c', 'a', 'b'], 'a')); // 3

// 计算数组元素的出现次数
// const countOccurrences = (arr) => arr.reduce((prev, curr) => ((prev[curr] = ++prev[curr] || 1), prev), {});
console.log(countOccurrences([2, 1, 3, 3, 2, 3])); // { '1': 1, '2': 2, '3': 3 }
console.log(countOccurrences(['a', 'b', 'a', 'c', 'a', 'b'])); // { 'a': 3, 'b': 2, 'c': 1 }
console 命令行工具 X clear

                    
>
console