JavaScript数组练习

目录

    • 1.查找数组元素的位置
    • 2.查找数组元素在数组中出现的次数
    • 3.数组求和
    • 4.移除数组元素
    • 5.添加数组元素
        • 1.在末尾添加
        • 2.在开头添加
    • 6.数组合并
    • 7.数组去重
        • 1.添加到新数组的方式
        • 2.改变原数组的方式
    • 8.移动数组中的0到末尾
    • 9.有序数组的平方

1.查找数组元素的位置

题目要求:输入数组arr和数组元素item,找出item元素在arr数组中的位置,如果数组中有item则输出该元素数组中的位置,否则输出错误信息。

分析: 1.题目要求我们输入数组和数组元素,找出数组元素在数组中的位置,也就是数组的下标,所以定义一个indexOf函数,给它设置两个参数arr、item, 2.核心思想:将输入的数组元素与数组中的每一项进行匹配,匹配相同的返回该元素的下标,输入的数组元素与数组没有匹配则返回提示信息

实现代码如下:

function indexOf(arr, item) {
     
        var index = 0;
        for (var i = 0; i < arr.length; i++) {
     
          if (arr[i] === item) {
     
            index = "输入数字的数字下标是" + i;
          }
        }
        if (index === 0) {
     
          index = "该数组中没有您输入的数字";
        }
        return index;
      }

2.查找数组元素在数组中出现的次数

题目要求:输入数组arr和数组元素item,找出item元素在arr数组中出现的次数

分析:此问题的核心思想是循环数组中的每一项与输入的元素进行对比,相同的则计数一次,直到程序循环完成为止,最终返回累加计数的变量
代码如下:

 function FindOccurrences(arr, item) {
     
        var j = 0;
        for (var i = 0; i < arr.length; i++) {
     
          if (arr[i] === item) {
     
            j++;
          }
        }
        return "该元素在数组中出现的次数为" + j;
      }

3.数组求和

题目要求:求arr数组中所有元素的和,输入的元素是Number类型

分析:将循环出的数组元素累加到一个变量中
代码如下:

function arrSum(arr) {
     
        var sum = 0;
        for (var i = 0; i < arr.length; i++) {
     
          sum += arr[i];
        }
        return sum;
      }

4.移除数组元素

题目要求:移除数组 arr 中指定item的元素。

分析:此问题的核心思想是循环数组中的每一项与输入的元素进行对比,与输入元素不相同的添加到新数组中
代码如下:

function arrRemove(arr, item) {
     
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
     
          if (arr[i] != item) {
     
            newArr.push(arr[i]);
          }
        }
        return newArr;
      }

第二种方法:循环数组中的每一项与输入的元素进行对比,与输入元素相同的利用splice方法删除

function removeWithoutCopy(arr, item) {
     
    for(var i=0;i<arr.length;i++){
     
        if(arr[i] == item){
     
            arr.splice(i,1);
            i=0;
        }
    }
    return arr;
}

5.添加数组元素

1.在末尾添加

在数组 arr 末尾添加元素 item

分析:利用push方法向数组中添加新元素
代码如下:

	function addArr(arr, item) {
     
        arr.push(item);
        return arr;
      }
      console.log(addArr([1, 2, 3, 4], 10));

2.在开头添加

题目要求:在数组 arr 开头添加元素 item

分析:利用unshift方法向数组中添加新元素
代码如下:

	 function addArr(arr, item) {
     
        arr.unshift(item);
        return arr;
      }

6.数组合并

题目要求:合并数组 arr1 和数组 arr2

分析:利用concat方法将arr1和arr2合并到一个新数组arr3
代码如下:

	function concatArr(arr1, arr2) {
     
        var arr3 = [];
        arr3 = arr1.concat(arr1);
        return arr3;
      }

7.数组去重

1.添加到新数组的方式

题目要求:将数组中重复的字符筛选掉

分析:利用indexOf方法的返回值来判断添加到新数组中的字符是否出现过,出现过的则不添加,没有出现过的则添加
代码如下:

	//添加到新数组
	function unique(arr) {
     
        var newArr = [];
        for (i = 0; i < arr.length; i++) {
     
          if (newArr.indexOf(arr[i]) === -1) {
     
            newArr.push(arr[i]);
          }
        }
        return newArr;
      }

2.改变原数组的方式

代码如下:

	function removeDuplicates(arr){
     
		for(var i=0;i<nums.length;i++){
     
       		 if(nums[i]===nums[i+1]){
     
           		 nums.splice(i,1);
           		 i--;
       		 }
   		 }
   		 return arr;
    }

8.移动数组中的0到末尾

题目要求:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例: 输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。

分析:将数组中的0全部删除,利用count计数在将删除的0添加到nums数组中后面
代码如下:

	function moveZeroes(nums) {
     
        var count = 0;
        for (i = 0; i < nums.length; i++) {
     
          if (nums[i] === 0) {
     
            nums.splice(i, 1);
            count++;
          }
        }
        for (i = 0; i < count; i++) {
     
          nums.push(0);
        }
        return nums;
      }

9.有序数组的平方

// 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按
//非递减顺序 排序。
// 示例 :
// 输入:nums = [-4,-1,0,3,10]
// 输出:[0,1,9,16,100]
// 解释:平方后,数组变为 [16,1,0,9,100]
// 排序后,数组变为 [0,1,9,16,100]

代码如下:

 function sortedSquares(nums) {
     
        var newArr = [];
        for (var i = 0; i < nums.length; i++) {
     
          newArr.push(nums[i] * nums[i]);
        }
        for (var i = 0; i < newArr.length - 1; i++) {
     
          for (var j = 0; j < newArr.length - 1 - i; j++) {
     
            if (newArr[j] > newArr[j + 1]) {
     
              var temp = newArr[j];
              newArr[j] = newArr[j + 1];
              newArr[j + 1] = temp;
            }
          }
        }
        return newArr;
      }

持续更新…

你可能感兴趣的:(javascript,算法,数组)