1.数组求和
题目描述:计算给定数组arr中所有元素的总和
示例:
输入:[1,2,3,4]
输出:10
解题方法
1.普通for循环
function sum(arr){
let res = 0
for(let i=0;i<arr.length;i++){
res += arr[i]
}
return res
};
2.forEach循环
function sum(arr){
let res = 0
arr.forEach((value,index,array)=>{
array[index] == value;
res += value;
});
return res;
};
3.reduce()
方法接受一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
function sum(arr){
return arr.reduce((pre,cur)=>{
return pre+cur;
})
};
4.eval
eval()函数可计算某个字符串,并执行其中的JavaScript代码
function sum(arr){
return eval(arr.join("+"));
}
2.移除数组中的元素(返回新的数组)
题目描述:移除数组arr中的所有值与item相等的元素。不要直接修改数组arr,结果返回新的数组
示例:
输入:[1,2,3,4,2],2
输出:[1,3,4]
1.filter过滤
function remove(arr,item){
return arr.filter(res =>{
return res != item;
})
}
2.for循环+push
function remove(arr,item){
let resArr = []
for(let i = 0;i < arr.length;i++){
if(arr[i]!==item){
resArr.push(arr[i])
}
}
return resArr
}
3.forEach + pash(效率高于for循环)
function remove(arr,item){
let resArr=[];
arr.forEach(v=>{
if(v!==item){
resArr.push(v);
}
})
return resArr;
}
4.for循环+splice
function remove(arr,item){
let resArr = arr.slice(0);
for(let i=0; i < resArr.length;i++){
if(resArr[i] == item){
resArr.aplice(i,1);
i--;
}
}
return resArr;
}
3.删除数组最后一个元素
题目描述:删除数组arr最后一个元素。不要直接修改数组arr,结果返回新的数组
示例:
输入:[1,2,3,4]
输出:[1,2,3]
方法一:slice
function truncate(arr){
return arr.slice(0,arr.length-1)
}
方法二:concat/slice+pop
function truncate(arr){
let resArr = arr.concat()
resArr.pop()
return resArr
}
4.判断是否以元音字母结尾
题目描述:给定字符串str,检查其是否以元音字母结尾,元音字母包括a,e,i,o,u以及对应的大写,包含返回true,否则返回false
示例:
输入:'gorilla'
输出:true
首先确定元音集合[a,e,i,o,u],然后是以元音结尾,加上$,最后通配大小写,加上i
方法一:
function endsWithVowel(str){
return /[a,e,i,o,u]$/i.test(str);
}
方法二:
function endsWithVowel(str){
return /(a|e|i|o|u)$/gi.test(str);
}
方法三:
function endsWithVowel(str){
return str && ("aeiouAEIOU".indexOf(str[str.length-1]) > -1);
}
5.判断是否包含数字
题目描述:给定字符串str,检查其是否包含数字,包含返回true,否则返回false
示例:
输入:'abc123'
输出:true
方法一:正则test
function containsNumber(str){
return /\d/.test(str);
}
方法二:正则match
function containsNumber(str){
return !!str.match(/\d/g)
}
方法三:遍历
function containsNumber(str){
for(let i=0;i < 10;i++){
if(str.indexOf(i)!=-1){
return true;
}
}
return false;
}
方法四:for循环+Number()
function containsNumber(str){
let res = str.split('')
for(let i = 0;i < res.length;i++){
let temp = Number(res[i]);
if(temp){
return true
}
}
return false
}
6.查找数组元素位置
题目描述:找出元素item在给定数组arr中的位置
输出描述:如果数组中存在item,则返回元素在数组中的位置,否则返回-1
示例:
输入:[1,2,3,4],3
输出:2
方法一:
function indexOf(arr,item){
if(Array.prototype.indexOf){
//判断浏览器是否支持indexOf方法
return arr.indexOf(item);
}else if(arr.indexOf(item) > 0){
return arr.indexOf(item)
}else{
return -1
}
}
方法二:
function indexOf(arr,item){
if(Array.prototype.indexOf){
return arr.indexOf(item);
}else{
for(var i=0;i < arr.length;i++){
if(arr[i]===item){
return i;
}
}
}
return -1
}
7.移除数组中的元素(返回原数组)
题目描述:移除数组arr中所有值与item相等的描述,直接在给定的arr数组上进行操作,并将结果返回
示例:
输入:[1,2,2,3,4,2,2],2
输出:[1,3,4]
方法一:
function removeWithoutCopy(arr, item) {
for(let i=arr.length;i>=0;i--){
if(arr[i]==item){
arr.splice(i,1);
}
}
return arr;
}
方法二:
function removeWithoutCopy(arr, item) {
for(let i=0;i<=arr.length;i++){
if(arr[i]===item){
arr.splice(i,1);
i