zoukankan      html  css  js  c++  java
  • JavaScript数组实战小练习

    1.找出元素在数组中的位置。

     1 function indexOf(arr, item) {
     2     if(Array.prototype.indexOf){ //判断浏览器是否支持indexOf方法
     3         return arr.indexOf(item);
     4     }else{
     5         for(var i=0; i<arr.length; i++){
     6             return i;
     7         }
     8     }
     9     return -1;
    10 }
    11 console.log("3在数组[1,2,3,4]中的位置:"+ indexOf([1,2,3,4],3)); //3在数组[1,2,3,4]中的位置:2

    2.计算数组中元素的和。

     1 /*function sum(arr){
     2     var all=0;
     3     for(var i=0; i<arr.length; i++){
     4         if(typeof arr[i] == "number"){
     5             all += arr[i];
     6         }
     7     }
     8     return all;
     9 }*/
    10 function sum(arr){
    11     return eval(arr.join("+"));
    12 }
    13 console.log("数组元素求和:"+ sum([1,2,3])); //数组元素求和:6

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

     1 function remove(arr, item) {
     2     var a=[];
     3     for(var i=0; i<arr.length; i++){
     4         if(arr[i]!=item){
     5             a.push(arr[i]);
     6         }
     7     }
     8     return a;
     9 }
    10 console.log(remove([1,2,3,4,2,3],2)); //[ 1, 3, 4, 3 ]

    4.移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回。

     1 function removeWithoutCopy(arr,item){
     2     for(var i=0; i<arr.length;i++){
     3         if(arr[i]==item){
     4             arr.splice(i,1);//这里的1可以理解为每遇到item就删除数组中的1个元素
     5             i--;//splice(i,1)删除一个元素,必须让i值减一,否则会跳过下一个元素
     6         }
     7     }
     8     return arr;
     9 }
    10 console.log(removeWithoutCopy([1,2,3,4,2,3],2));//[ 1, 3, 4, 3 ]

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

    1 function append(arr,item){
    2     var a = arr.slice(0);//splice()可从已有的数组中返回选定的元素:arrayObj.slice(start,end);
    3     a.push(item);
    4     return a;
    5 }
    6 console.log(append([1, 2, 3, 4],  10)); //[ 1, 2, 3, 4, 10 ]

    6.删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组。

    1 function truncate(arr){
    2     return arr.slice(0,arr.length-1);
    3 }
    4 console.log(truncate([1,2,3,4]));//[ 1, 2, 3 ]

    7.在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组。

    1 function prepend(arr,item){
    2     var a = arr.slice(0); //unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。arrayObject.unshift(newelement1,newelement2,....,newelementX)
    3     a.unshift(item);
    4     return a ;
    5 }
    6 console.log(prepend([1,2,3,4],10)); //[ 10, 1, 2, 3, 4 ]
    1 function prepend(arr,item){
    2     return [item].concat(arr);
    3 }
    4 console.log(prepend([1,2,3,4],10)); //[ 10, 1, 2, 3, 4 ]

    8.删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组。

    1 /*function curtail(arr){
    2     var a = arr.slice(0);
    3     a.shift();
    4     return a;
    5 }*/
    6 function curtail(arr){
    7     return arr.slice(1);
    8 }
    9 console.log(curtail([1,2,3,4])); //[2,3,4]

    9.合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组。

     1 /*function concat(arr1,arr2){
     2     var a = arr1.slice(0);
     3     for(var i=0; i<arr2.length; i++){
     4         a.push(arr2[i]);
     5     }
     6     return a;
     7 }*/
    1 function concat(arr1,arr2){
    2     return arr1.concat(arr2);
    3 }
    4 console.log(concat([1, 2, 3, 4], ['a', 'b', 'c', 1]));//[ 1, 2, 3, 4, 'a', 'b', 'c', 1 ]

    10.在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组。

    1 function insert(arr,item,index){
    2     return arr.slice(0,index).concat(item,arr.slice(index));
    3 }
    4 console.log(insert([1,2,3,4],'z',2));//[ 1, 2, 'z', 3, 4 ]

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

    1 function count(arr,item){
    2     var cnt=0;
    3     for(var i=0; i<arr.length; i++){
    4         arr[i] == item ? cnt++ : 0;
    5     }
    6     return cnt;
    7 }
    8 console.log(count([1, 2, 4, 4, 3, 4, 3], 4));//3

    12.找出数组 arr 中重复出现过的元素************************************************

     1 function duplicates(arr) {
     2     //声明两个数组,a数组用来存放结果,b数组用来存放arr中每个元素的个数
     3     var a = [],b = [];
     4     //遍历arr,如果以arr中元素为下标的b元素已存在,则该b元素加1,否则设置为1
     5     for(var i = 0; i < arr.length; i++){
     6         if(!b[arr[i]]){
     7             b[arr[i]] = 1;
     8             continue;
     9         }
    10         b[arr[i]]++;
    11     }
    12     //遍历b数组,将其中元素值大于1的元素下标存入a数组中
    13     for(var i = 0; i < b.length; i++){
    14         if(b[i] > 1){
    15             a.push(i);
    16         }
    17     }
    18     return a;
    19 }
    20 console.log(duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]));

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

     1 /*function square(arr){
     2     var a = arr.slice(0),
     3         b = [];
     4     for(var i=0; i<arr.length; i++){
     5         b.push(a[i]*a[i]);
     6     }
     7     return b;
     8 }*/
     9 /*// 使用map
    10 function square(arr) {
    11     return arr.map(function(e) {
    12         return e * e;
    13     })
    14 }*/
    15 const square = arr => arr.map(e => e* e);
    16 console.log(square([1,2,3,4]));

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

    1 function findAllOccurrences(arr,target){
    2     var a=[];
    3     arr.forEach(function(val,index){
    4         val !== target || a.push(index);
    5     });
    6 
    7     return a;
    8 }
    9 //console.log(findAllOccurrences('abcdefabc',target)); //为什么加上这句就错了呢?

     __proto__:Array[0]

  • 相关阅读:
    javascript 如何获取return回来的对象值
    遮罩层背景设置
    Javascript跨域请求的几种解决方法
    手机端viewport的设置规范
    javascript定义类和类的实现
    javascript 中对this关键字的一些理解
    实例化对象的时候。其实就是调用构造函数
    Javascript定义类(class)的三种方法
    javascript面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
    JavaScript判断横屏/竖屏
  • 原文地址:https://www.cnblogs.com/qingruozhu/p/7368430.html
Copyright © 2011-2022 走看看