数组题
1.题目描述
找出元素 item 在给定数组 arr 中的位置
输出描述:
如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1
输入例子:
indexOf([ 1, 2, 3, 4 ], 3)
输出例子:
2
function indexOf(arr, item) { var index = -1; for( var i=0;i<arr.length;i++){ if( arr[i] == item){ index = i; break; } } return index; }
2.题目描述
计算给定数组 arr 中所有元素的总和
输入描述:
数组中的元素均为 Number 类型
输入例子:
sum([ 1, 2, 3, 4 ])
输出例子:
10
function sum(arr) { var osum = 0; for(var i=0;i<arr.length;i++){ osum += arr[i]; } return osum; }
3.题目描述
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
输入例子:
remove([1, 2, 3, 4, 2], 2)
输出例子:
[1, 3, 4]
function remove(arr, item) { var newArr = new Array(); alert(newArr.length); for( var i=0;i<arr.length;i++){ if( arr[i]!=item){ if(newArr.length==0){ newArr[0] = arr[i]; } else { newArr[newArr.length] = arr[i]; } } } return newArr; }
4.题目描述
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
输入例子:
removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)
输出例子:
[1, 3, 4]
function removeWithoutCopy(arr, item) { for( var i=0;i<arr.length;i++){ if( arr[i]==item){ arr.splice(i,1); i=i-1; } } return arr; }
5.题目描述
在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
输入例子:
append([1, 2, 3, 4], 10)
输出例子:
[1, 2, 3, 4, 10]
function append(arr, item) { var newArr = new Array(); var len = arr.length; for(var i=0;i<len;i++){ newArr[i] = arr[i]; } newArr[len] = item; return newArr; }
坑点:如果你直接 var newArr = arr;就错了,因为newArr和arr指的是同一块内存,你修改了newArr其实也修改了arr,和题目意思相背离.而new Array()是新建一个对象,新开辟一块内存,两者互不影响.
考点:面向对象思想,类和对象.对象是类的实例化,对象之间的简单赋值,只是引用的赋值,所指的内存是没有变的
6.题目描述
合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组
输入例子:
concat([1, 2, 3, 4], ['a', 'b', 'c', 1])
输出例子:
[1, 2, 3, 4, 'a', 'b', 'c', 1]
function concat(arr1, arr2) { var newArr = new Array(); var i=0; for(i=0;i<arr1.length;i++) { newArr[i] = arr1[i]; } for( var j=0;j<arr2.length;j++){ newArr[i+j] = arr2[j]; } return newArr; }
7.题目描述
在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组
输入例子:
insert([1, 2, 3, 4], 'z', 2)
输出例子:
[1, 2, 'z', 3, 4]
function insert(arr, item, index) { var newArr = new Array(); for( var i=0;i<index;i++){ newArr[i] = arr[i]; } newArr[index] = item; for( var i= index;i<arr.length;i++) { newArr[i+1] = arr[i]; } return newArr; }
题目描述
统计数组 arr 中值等于 item 的元素出现的次数
输入例子:
count([1, 2, 4, 4, 3, 4, 3], 4)
输出例子:
3
function count(arr, item) { var number = 0; for(var i=0;i<arr.length;i++) { if(arr[i]==item){ number++; } } return number; }
坑点:仅对自己而言,一开始想到了Array.indexOf(item,start);但是这个函数返回的是找到item首次出现的位置,若找不到返回-1.
8.题目描述
找出数组 arr 中重复出现过的元素
输入例子:
duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()
输出例子:
[1, 3, 4]
function duplicates(arr) { var newArr = new Array(); var flag =0; var k=0; for(var i=0;i<arr.length;i++) { for( var j=i+1;j<arr.length-1;j++) { if( arr[i]==arr[j]) { for( k=0;k<newArr.length;k++) { if(newArr[k]==arr[i]) flag = 1; } if( flag==0) { newArr[k] = arr[i]; k++; } } } } return newArr; }