JavaScript的操作
1. 字符串首字母大写
该字符串被强制转换为数组并进行解构。数组中的第一个元素是第一个字母,toUpperCase
方法用于将其转换为大写,而数组的其余部分则作为字符串连接。
const capitalize = ([first, ...rest]) => first.toUpperCase() + rest.join("");
// 示例
capitalize("javascript");
// output: Javascript
2.数组求和
使用数组函数reduce
可以很简单实现数组的累加、累乘
const arrAdd = (arr) => arr.reduce((acc,cur) => acc + cur, 0);
// 示例
arrAdd([1,2,3,4]);
// output: 10
扩展
2.1. 对象数组求指定属性值的和
const objArrAdd = (arr, key) => arr.reduce((acc, cur) => acc + cur[key], 0);
// 示例
let arr = [{
count: 10,
weight: 1
}, {
count: 20,
weight: 2
}];
objArrAdd(arr,'count');
// output: 30
2.2. 对象数组各属性求和
const objArrAdd2 = (arr) => arr.reduce((acc,cur) => {
for(let key in cur) {
if (!acc[key]){
acc[key] = 0;
}
acc[key] += cur[key];
}
return acc;
}, {});
// 示例
let arr = [{
count: 10,
weight: 1
}, {
count: 20,
weight: 2
}];
objArrAdd2(arr);
// output: {count: 30, weight: 3}
3.找出两个数组之间的差异
此解决方案从一个数组创建一个集合,然后使用Array
筛选器方法filter
将其与另一个数组进行比较。此处使用Set
是一种优化,在处理较大的阵列时效率更高。
const difference = (a, b) => {
if(a.length>=b.length){
const set = new Set(b);
return a.filter((item) => !set.has(item));
}else {
const set = new Set(a);
return b.filter((item) => !set.has(item));
}
}
// 示例
difference([1,2,3,4,5],[1,2,4]);
// output: [3, 5]
difference([1],[1,2,3,4]);
// output: [2, 3, 4]