JavaScript数组练习

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;
      }

持续更新…

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值