JavaScript数组实战小练习

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

1 function indexOf(arr, item) {
2     return arr.indexOf(item);
3 }
4 console.log("3在数组[1,2,3,4]中的位置:"+ indexOf([1,2,3,4],3));

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 console.log("数组元素求和:"+ sum([1,2,3]));

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,2,3,4,2,4,3,3,3,2],2));

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--;
 6              }
 7          }
 8      return arr;
 9  }
10 console.log(removeWithoutCopy([7,2,5,4,3,2,4,2,5,2],2));

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

 1 /*function append(arr,item){
 2     var a = [];
 3     for(var i=0; i<arr.length; i++){
 4         a.push(arr[i]);
 5     }
 6     a.push(item);
 7     return a;
 8 }*/
 9 function append(arr,item){
10     var a = arr.slice(0); //splice()可从已有的数组中返回选定的元素:arrayObj.slice(start,end);
11     a.push(item);
12     return a;
13 }
14 console.log(append([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]));

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

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]));

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 }*/
 8 function concat(arr1,arr2){
 9     return arr1.concat(arr2);
10 }
11 console.log(concat([1,2,3],[‘a‘,‘b‘,‘c‘]));

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

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

 1 /*function count(arr,item){
 2     var cnt=0;
 3     for(var i=0; i<arr.length; i++){
 4         if(arr[i] == item){
 5             cnt++;
 6         }
 7     }
 8     return cnt;
 9 }*/
10 function count(arr,item){
11     var cnt = 0;
12     arr.forEach(function(e){
13         e==item?cnt++:0;
14     });
15     return cnt;
16 }
17 console.log(count([1, 2, 4, 4, 3, 4, 3], 4));

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]

时间: 2024-10-12 18:05:38

JavaScript数组实战小练习的相关文章

JavaScript 数组去重

JavaScript 数组去重 Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对话,你会学到很多.为什么是 underscore?最主要的原因是 underscore 简短精悍(约 1.5k 行),封装了 100 多个有用的方法,耦合度低,非常适合逐个方法阅读,适合楼主这样的 JavaScript

JavaScript性能优化小知识总结(转)

JavaScript的性能问题不容小觑,这就需要我们开发人员在编写JavaScript程序时多注意一些细节,本文非常详细的介绍了一下JavaScript性能优化方面的知识点,绝对是干货. 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己不擅于思考懒得思考以至于里面说的一些精髓都没有太深入的理解. 鉴于想让自己有一个提升,进不了一个更加广阔的天地,总得找一个

JavaScript性能优化小知识总结

一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己不擅于思考懒得思考以至于里面说的一些精髓都没有太深入的理解.鉴于想让自己有一个提升,进入一个更加广阔的天地,总得找一个属于自己的居所好好生存,所以平时会有意无意的去积累一些使用jQuerry的常用知识,特别是对于性能要求这一块,总是会想是不是有更好的方式来实现.下面是我总结的一些小技巧,仅供参考.(我先会说一个总标

javascript 数组特性鉴赏一

创建数组 如果你习惯了用 new 来实例化对象的形式,那么在js中一定会疑惑,可选的参数数量代表的意义截然不同. new Array(size);//传一个参数的时候分两种情况,size是正整数时代表数组的长度:size是其它非数字类型代表的是初始化有一个元素的数组:非正整数的尝试豪无意义 new Array(element1, element2[, ...]);//两个以上的参数代表数组元素列表 实际更常用的是: var arr = [];//使用字面量的形式直接定义 数组长度 js数组的长度

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScript使用push方法添加一个元素到数组末 JavaScript数组函数unshift、shift、pop、push使用

push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( item1 [,items... ] )参数 参数 描述item1 任意类型添加到当前数组末尾处的元素.items 可选参数/任意类型要添加到当前数组末尾处的其他项,可以有多个.注意:如果添加的元素类型为数组类型(Array),仍然会被当作一个元素看待,只是这个元素是数组类型而已.如果要合并两个数组,请使

JavaScript数组的某些操作(二)

7.颠倒数组中元素的顺序(注意:不是为数组排序)--reverse方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head> <h

( 译、持续更新 ) JavaScript 上分小技巧(二)

考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... #29 - 使用缓存的记忆让递归函数加速运行波非那切数列(Fibonacci sequence)想必大家都不陌生(针对学霸而言,在这之前本兽完全不知道这是个什么鬼,虽然经常会用到递归),我们可以在20秒内写出以下的函数: var fibonacci = function(n){ return n < 2 ? n : fibonacci(n-1) + fibonacci(n-2); } 它确实是运行了,但是效率并不

Javascript数组小结

Javascript数组小结 Javascript将指定的数字索引值转换成字符串--索引值1变成"1"--然后将其作为属性名来使用. 数组的length修改后,数组中大于设定值的元素将被删除 数组的添加删除: 1)  修改length属性值(删除) 2)  push.pop在数组的尾部进行插入.删除操作并返回操作元素:unshift和shift()在数组的首部进行插入.删除操作 3)  delete可以删除数组元素,但它不会改变数组的length属性,只是将该值置空. 4)  spli

JavaScript数组的某些操作(一)

在软件开发的过程中JavaScript的编程在所难免,其中对数组的操作尤为常见,这里介绍一下和JavaScript数组相关的某些操作: 1.删除并返回数组的第一个元素--shift方法: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns=&quo