1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <script>
  9. //数组浅复制:指向的是同一个对象,对象变化时,他们都变化。
  10. var numbers = [1,2,3];
  11. var num = numbers;
  12. console.log(num);
  13. console.log(numbers);
  14. numbers[1] = 4;
  15. console.log(num[1]);
  16.  
  17. //数组深复制:把数组中的每个元素都复制到新数组中
  18. function Copy(arr1,arr2){
  19. for(var i=0;i<arr1.length;i++){
  20. arr2[i]=arr1[i];
  21. }
  22. return arr2;
  23. }
  24.  
  25. //数组几个可变方法: unshift() 添加元素到数组开头 push() 添加元素到数组尾 pop()删除最后一个元素 shift() 删除数组第一个元素
  26.  
  27. var arr = [1,2,3,4,5];
  28. arr.unshift(6);
  29. console.log("unshift",arr);
  30. var arr = [1,2,3,4,5];
  31. arr.shift();
  32. console.log("shift",arr);
  33. var arr = [1,2,3,4,5];
  34. arr.push(6);
  35. console.log("push",arr);
  36.  
  37. var arr = [1,2,3,4,5];
  38. arr.pop();
  39. console.log("pop",arr);
  40.  
  41. //数组排序 sort() 和 sort(function) ,reverse();
  42. function compare(num1,num2){
  43. return num1-num2;
  44. }
  45. var arr = [1,3,100,6,50];
  46. // arr.sort();//这个排序默认以字符串的形式排列 所以数字有误差 可以加个比较函数 实现数字排序。
  47. arr.sort(compare);
  48. console.log("sortarr",arr);
  49.  
  50. arr .reverse();
  51. console.log(arr,"reverse");
  52.  
  53. //返回索引 : indexOf() 和 lastIndexOf()
  54. var arr = [1,2,2,3];
  55. console.log(arr.indexOf(2));
  56. console.log(arr.indexOf(4)); // 找不到 返回-1
  57. console.log(arr.lastIndexOf(2)); // 返回数组中跟参数相同的所有元素中的最后一个索引。
  58.  
  59. //数组字符串表示 join() 和 toString()方法
  60. var arr = ['zhangsan','lisi','zhaowu','wangliu'];
  61. console.log(arr.join());
  62. console.log(arr.toString()); //返回的结果是一样的,逗号分隔的字符串.
  63.  
  64. //数组生成数组 :concat() splice()
  65. var arr1 = ['hello','javascript'],
  66. arr2 = ['name','class'];
  67. console.log(arr1.concat(arr2));
  68.  
  69. var arr = ['hello','this',"is",'splice'];
  70. console.log(arr.splice(1,3));
  71. console.log(arr); //切割完 数组就变成剩下的元素组成的数组
  72.  
  73. //从数组中间位置添加 删除元素 :splice(a,b,value) a :起始索引 b 要截取(删除)的元素个数 value,要添加的元素,可以是多个,依次逗号隔开。
  74. var arr= [1,2,3,100,200,4,5];
  75. arr.splice(3,2);
  76. console.log(arr); //完成删除
  77.  
  78. var arr = [1,2,3,4,5];
  79. arr.splice(3,0,100,200); //插入的值依次逗号隔开
  80. console.log(arr);
  81.  
  82. //迭代器方法
  83. //不生成新数组的: forEach(function) 接受一个函数,对每个元素进行迭代,
  84. // every(function) 返回一个布尔值,方法作用在每个元素上都返回true,every(function) 才返回true
  85. // some(function) 与every(function ) 类似,但只要有一个返回true,some就返回true。
  86. // reduce(function) 迭代累加, 也可以连接成字符串, 还可以用 reduceRight(function)方法进行反转
  87.  
  88. //forEach(function)
  89. var arr = [1,2,3,4,5,6,7,8,9];
  90. function print(num){
  91. console.log(num,num*num);
  92. }
  93. arr.forEach(print);
  94.  
  95. //every(function),some(function)
  96. var arr = [4,5,6,7,8,9];
  97. var bool = arr.some(function(num){
  98. // var bool = arr.every(function(num){
  99. console.log(num>5);
  100. return num>5
  101. });
  102. console.log(bool);
  103.  
  104. //reduce(function)
  105. var arr = [1,2,3,4];
  106. function add(num1,num2){
  107. return num1 + num2;
  108. }
  109. console.log(arr.reduce(add)); //10
  110.  
  111. //生成新数组迭代方法:map(function), filter(function)
  112. //map
  113. var arr = ["hello","javascript","function"];
  114. function first(value){
  115. return value[0];
  116. }
  117. console.log(arr.map(first).join(''));
  118.  
  119. //filter:参数函数需要返回布尔值,结果是满足条件的所有元素列表。 相当于过滤器。也可以用来过滤字符串数组。
  120. var arr = [1,2,3,4,5,6,7,8];
  121. var res = arr.filter(function(num){
  122. return num >5
  123. })
  124. console.log("res",res); //6,7,8
  125.  
  126. //获取数组所有key值
  127. var arr=new Array();
  128. arr["name"] = "张三";
  129. arr["age"] = "20";
  130.  
  131. console.log(Object.keys(arr));
  132. </script>
  133. </body>
  134. </html>

JavaScript数据结构-1.数组的更多相关文章

  1. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

  2. 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组

    第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...

  3. JavaScript数据结构与算法-数组练习

    一. 创建一个记录学生成绩的对象,提供一个添加成绩的方法,以及一个显示学生平均成绩的方法. // 创建一个记录学生成绩的对象 const Students = function Students () ...

  4. 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)

    定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...

  5. JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)

    前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...

  6. JavaScript 数据结构与算法1(数组与栈)

    学习数据结构的 git 代码地址: https://gitee.com/zhangning187/js-data-structure-study 1.数组 几乎所有的语言都原生支持数组类型,因为数组是 ...

  7. JavaScript数据结构——数组

    参考书籍:<学习JavaScript数据结构与算法>

  8. 【从0到1学javascript】javascript数据结构----数组

    javascript中对数组的定义 数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可以是整数.这些数字索引在内部被转换成字符串类型.这是因为javascript对象中的属性名必须是字符 ...

  9. 学习javascript数据结构(三)——集合

    前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...

随机推荐

  1. poj2115 Looooops 扩展欧几里德的应用

    好开心又做出一道,看样子做数论一定要先看书,认认真真仔仔细细的看一下各种重要的性质 及其用途,然后第一次接触的题目 边想边看别人的怎么做的,这样做出第一道题目后,后面的题目就完全可以自己思考啦 设要+ ...

  2. struct timeval 计时问题

    linux编程中,如果用到计时,可以用struct timeval获取系统时间.struct timeval的函数原型如下: struct timeval { __kernel_time_t tv_s ...

  3. web api 跨域问题的解决办法

    在APP_Start文件夹下面的WebApiConfig.cs文件夹配置跨域 public static class WebApiConfig { public static void Registe ...

  4. angular响应式表单 - 状态字段

    用于表单验证的过程: touched,untoched pristine,dirty pending

  5. jsp int转String or String转int 方法

    将字串 String 转换成整数 int?  A. 有两个方法: 1). int i = Integer.parseInt([String]); 或  i = Integer.parseInt([St ...

  6. c# async 事物

    上菜 async await 机制 确实便捷开发   多线程时 如何一致性如何保证呢? public async Task<ActionResult<IEnumerable<stri ...

  7. 八.linux系统文件属性知识

    1.文件属性权限是12位,现在只看9位,其中每3个一组,为:属主权限.属组权限.其他权限,其中r可读,w可写,x可执行,如图: 2.文件属性之软硬链接   linux系统中有两种链接,为硬链接(ln) ...

  8. 关于Collections的操作方法

    Collections是一个包装类,其中包含有各种有关集合操作的静态多态方,比如可以作用在List和Set上,此类不能实例化. 排序 Integer[] array = new Integer[]{3 ...

  9. 超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群

    超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群 ps:本文的步骤已自实现过一遍,在正文部分避开了旧版教程在新版使用导致出错的内容,因此版本一致的情况下照搬执行基本不会有大错误. ...

  10. Lexicographical Substring Search (spoj7259) (sam(后缀自动机)+第k小子串)

    Little Daniel loves to play with strings! He always finds different ways to have fun with strings! K ...