算法太薄弱,每天刷题
数组
//用数组自带的reduce方法进行迭代金酸
function sum(arr) {
return arr.reduce(function(pre,next){
return pre+next
})
}
//注意对数组本身去除,随意length会变化,i++要在没有去除元素的时候加
function removeWithoutCopy(arr, item) {
for(var i=0;i<arr.length;){
if( arr[i]==item ){
arr.splice(i,1)
continue;
}
i++
}
return arr
}
题目描述
在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组
function prepend(arr, item) {
return [].concat(item,arr)
}
//arr.indexOf(item) != arr.lastIndexOf(item) 通过第一次出现和最后出现的index来判断是否重复
//arr.indexOf(item) == index 通过第一次出现index和遍历index对比,去除重复的
function duplicates(arr) {
return arr.filter((item,index)=>{
return arr.indexOf(item) != arr.lastIndexOf(item) && arr.indexOf(item) == index
})
}
题目描述
在数组 arr 中,查找值与 item 相等的元素出现的所有位置
//indexOf可以根据index不同选取查找范围
function findAllOccurrences(arr, target) {
var index = 0
var list = []
do{
index = arr.indexOf(target,index)
if(index!=-1){
list.push(index)
index++
}
}while(index!=-1)
return list
}