-
计算给定数组 arr 中所有元素的总和
// 最初的垃圾写法 function sum(arr) { let sum = arr.reduce((prevValue, item) => { return prevValue + item; }) return sum; } function sum(arr) { return arr.reduce((prevValue, item) => { return prevValue + item; }) } -
找出元素 item 在给定数组 arr 中的位置
// 所有的 function indexOf(arr, item) { let storage = []; for(let i of arr) { if(arr[i] === item) { storage.push(i) } } if(storage.length == 0) { storage = -1; } return storage.toString(); } -
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
方法一:// 如果用splice删除,会影响arr序列,可以从后往前删除 function removeWithoutCopy(arr, item) { for(i=arr.length-1;i>=0;i--) { if(arr[i]==item) { arr.splice(i,1); } } return arr; } 方法二: 从后边添加,从前边删除 function removeWithoutCopy(arr, item) { var n=arr.length; for(var i=0;i<n;i++){ if(arr[0]!==item){ arr.push(arr[0]); } arr.shift(); } return arr; } > Array [1, 2, 2, 3, 4, 2, 2] > Array [1, 2, 2, 3, 4, 2, 2, 1] > Array [2, 2, 3, 4, 2, 2, 1] > Array [2, 2, 3, 4, 2, 2, 1] > Array [2, 3, 4, 2, 2, 1] > Array [2, 3, 4, 2, 2, 1] > Array [3, 4, 2, 2, 1] > Array [3, 4, 2, 2, 1, 3] > Array [4, 2, 2, 1, 3] > Array [4, 2, 2, 1, 3, 4] > Array [2, 2, 1, 3, 4] > Array [2, 2, 1, 3, 4] > Array [2, 1, 3, 4] > Array [2, 1, 3, 4] > Array [1, 3, 4] -
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
function remove(arr, item) { return arr.filter((i) => { return i!==item }); } -
在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
// 方法一: function append(arr, item) { return arr.concat([item]) } // 方法二: push方法返回的是数组长度,所以没办法连写。 splice返回被删除的项目 function append(arr, item) { let arr2 = arr.slice(0); arr2.push(item) return arr2; } 1. slice(0) 是浅拷贝 2. -
改变数组:
- arr.splice() - arr.reverse() - arr.fill() - arr.copyWithin() // 方法用于从数组的指定位置拷贝元素到数组的另一个指定位置中。 - arr.sort() - arr.push() - arr.pop() - arr.unshift() - arr.shift() -
不改变数组:
- concat - join - slice - map,filter,some,every
\