首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

js能力测评经典题中分析数组类型的用法_附代码

2020-11-27 来源:化拓教育网

最近在做中的js能力测评经典题,因此按照自己的能力和想法进行了总结,此篇文章主要是数组类的总结。

1、找出元素item在给定数组中的位置:arr.indexOf(item);

2、计算给定数组arr中所有元素的总和:arr.forEach(function(e){sum=sum+e;})


注:数组名.forEach(function(数组元素,元素索引,额外定义的数组){函数体}) //返回的仍是调用的数组

数组名.map(function(数组元素){函数体}) //返回的是新数组,它不修改调用的数组;

3、移除数组arr中的所有制与item相等的元素,不要直接修改数组arr,结果返回新的数组。

function remove(arr, item) {
 var newArray=[];
 arr.forEach(function(e){
 if(e!=item){
 newArray.push(e);
 }
 })
 return newArray;
}

4、移除数组arr中的所有与item相等的元素,直接在给定的数组上修改,并将结果返回。

//方法一:从前往后遍历删除元素
function removeWithoutCopy(arr,item){
 for(i=0;i<arr.length;i++){
 if(item==arr[i]){
 arr.splice(i,1); //splice(定位元素索引[,删除元素个数,添加元素])
 i--;//i--的目的是因为删除了一个元素,在回到for时需要i++,会跳过一个元素
 }
 }
}

//方法二:从后往前遍历删除元素
function removeWithoutCopy(arr,item){
 for(i=arr.length-1;i>=0;i--){
 if(item==arr[i]){
 arr.splice(i,1); //删除时无需进行位移
 }
 }
}

注:数组名.splice(索引[,个数,添加元素]),splice意味着直接在原有数组上进行修改,返回值为删除元素组成的数组。例:var a=[1,2,3,4,5];a.splice(3,1)//返回[4],a为[1,2,3,5]

5、在数组arr末尾添加元素item,不要直接在arr上修改,返回新的数组。

//方法一:直接使用数组的concat追加新的item,并返回新的数组
function append(arr, item) {
 return arr.concat(item);
}

//方法二:利用slice对原数组进行切分,产生新的数组,在对新数组进行push即可
function append(arr, item) {
 var newArray=arr.slice(0);
 newArray.push(item);
 return newArray;
}
//方法三:利用数组的map创建新的数组,最后对新数组push(item)即可
function append(arr, item) {
 var newArray=arr.map(function(e){
 return e;
 })
 newArray.push(item);
 return newArray;
}
//方法四:定义一个空数组,利用for/forEach进行赋值,再对新数组push(item)即可
function append(arr, item) {
 var newArray=[];
 arr.forEach(function(e){
 newArray.push(e);
 })
 newArray.push(item);
 return newArray;
}

6、删除数组arr最后一个元素,不要直接修改数组arr,结果返回新的数组:return arr.slice(0,arr.length-1);

7、在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组:var newArray=arr.slice(0);newArray.unshift(item)

8、删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组:return arr.slice(1);

9、合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组:return arr1.concat(arr2);

10、在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组:var newArray = arr.slice(0); newArray.splice(index,0,item); return newArray;

11、统计数组 arr 中值等于 item 的元素出现的次数。

function count(arr, item) {
 var count=0;
 arr.forEach(function(e){
 if(e==item)
 count+=1;
 });
 return count;
}

12、找出数组 arr 中重复出现过的元素。输入:[1, 2, 4, 4, 3, 3, 1, 5, 3]。输出:[1, 3, 4]。

//方法一:利用indexOf和lastIndexOf进行判断
function duplicates(arr) {
 var result=[];
 arr.forEach(function(e){
 if(arr.indexOf(e)!=arr.lastIndexOf(e) && result.indexOf(e)==-1){
 result.push(e);
 }
 });
 return result;
}

//方法二:利用双重for循环进行判断
function duplicates(arr) {
 var result=[];
 for(i=0;i<arr.length-1;i++){
 for(k=0;k<result.length;k++){
 if(arr[i]==result[k])
 break;
 }
 if(k!=result.length) continue;
 for(j=i+1;j<arr.length;j++){
 if(arr[i]==arr[j]){
 result.push(arr[i]);
 break;
 }
 }
 }
 return result;
}

13、为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组。

//方法一:定义空数组,对arr进行遍历赋值
function square(arr) {
 var newArr=[];
 arr.forEach(function(e){
 newArr.push(e*e);
 });
 return newArr;
}
//方法二:直接使用map产生新的数组
function square(arr) {
 return arr.map(function(e){
 return e*e;
 })
}

14、在数组 arr 中,查找值与 item 相等的元素出现的所有位置

function findAllOccurrences(arr, target) {
 var newArray=[];
 arr.forEach(function(e,i){
 if(e==target) newArray.push(i);
 })
 return newArray;
}

在js经典题中,以上便是所有数组的题型,接下来便是编码规范、函数模块。

显示全文