JS数组

Posted 吻泪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS数组相关的知识,希望对你有一定的参考价值。

数组
  很多的数据的集合
定义: 

var arr = [];//定义
var arr1 = [1,2,3];//定义并赋值

  数组元素:数组里面的值
  数组下标(索引)作用;指明元素在数组中的位置:从0开始;

  例子:

    arr[0]为取数组下标为0的第一个元素
  数组长度:arr.length

数组方法:

  join()  //数组转字符串

例子:

var arr =[1,2,3,4];
console.log(arr.join("-")); //1-2-3

 通过join()方法可以实现重复字符串,只需传入字符串以及重复的次数,就能返回重复后的字符串,函数如下:

function repeatString(str, n) {
  return new Array(n + 1).join(str);
}
console.log(repeatString("abc", 3)); // abcabcabc

  

  push()pop()  //数组末尾的添加、删除

push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。 
pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。

例子:

var arr = ["Lily","lucy","Tom"];
var count = arr.push("Jack","Sean");
console.log(count); // 5
console.log(arr); // ["Lily", "lucy", "Tom", "Jack", "Sean"]
var item = arr.pop();
console.log(item); // Sean
console.log(arr); // ["Lily", "lucy", "Tom", "Jack"]

  shift()unshift()//第一个元素的添加上相互

shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。 
unshift:将参数添加到原数组开头,并返回数组的长度 。

这组方法和上面的push()和pop()方法正好对应,一个是操作数组的开头,一个是操作数组的结尾。

例子:

var arr = ["Lily","lucy","Tom"];
var count = arr.unshift("Jack","Sean");
console.log(count); // 5
console.log(arr); //["Jack", "Sean", "Lily", "lucy", "Tom"]
var item = arr.shift();
console.log(item); // Jack
console.log(arr); // ["Sean", "Lily", "lucy", "Tom"]

  sort()  //排序 1324=>1234

例子:

var arr1 = ["a", "d", "c", "b"];
console.log(arr1.sort()); // ["a", "b", "c", "d"]
arr2 = [13, 24, 51, 3];
console.log(arr2.sort()); // [13, 24, 3, 51]
console.log(arr2); // [13, 24, 3, 51](元数组被改变)

  

为了解决上述问题,sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。以下就是一个简单的比较函数:

function compare(value1, value2) {
  if (value1 < value2) {
    return -1;
  } else if (value1 > value2) {
    return 1;
  } else {
    return 0;
  }
}
arr2 = [13, 24, 51, 3];
console.log(arr2.sort(compare)); // [3, 13, 24, 51]

降序:

  

function compare(value1, value2) {
    if (value1 < value2) {
      return 1;
    } else if (value1 > value2) {
      return -1;
    } else {
      return 0;
    }
}
arr2 = [13, 24, 51, 3];
console.log(arr2.sort(compare)); // [51, 24, 13, 3]

  reverse()  //翻转 1234=>4321

例子:

var arr = [13, 24, 51, 3];
console.log(arr.reverse()); //[3, 51, 24, 13]
console.log(arr); //[3, 51, 24, 13](原数组改变)

  

  concat()  //链接数组

例子:

var arr = [1,3,5,7];
var arrCopy = arr.concat(9,[11,13]);
console.log(arrCopy); //[1, 3, 5, 7, 9, 11, 13]
console.log(arr); // [1, 3, 5, 7](原数组未被修改)

  

  slice()  //删除指定位置的元素

例子:

var arr = [1,3,5,7,9,11];
var arrCopy = arr.slice(1);
var arrCopy2 = arr.slice(1,4);
var arrCopy3 = arr.slice(1,-2);
var arrCopy4 = arr.slice(-4,-1);
console.log(arr); //[1, 3, 5, 7, 9, 11](原数组没变)
console.log(arrCopy); //[3, 5, 7, 9, 11]
console.log(arrCopy2); //[3, 5, 7]
console.log(arrCopy3); //[3, 5, 7]
console.log(arrCopy4); //[5, 7, 9]

解释:

arrCopy只设置了一个参数,也就是起始下标为1,所以返回的数组为下标1(包括下标1)开始到数组最后。 
arrCopy2设置了两个参数,返回起始下标(包括1)开始到终止下标(不包括4)的子数组。 
arrCopy3设置了两个参数,终止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替换该位置的数,因此就是从1开始到4(不包括)的子数组。 
arrCopy4中两个参数都是负数,所以都加上数组长度6转换成正数,因此相当于slice(2,5)。  


  splice()  //删除指定位置的元素

删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。例如, splice(0,2)会删除数组中的前两项。

var arr = [1,3,5,7,9,11];
var arrRemoved = arr.splice(0,2);
console.log(arr); //[5, 7, 9, 11]
console.log(arrRemoved); //[1, 3]

  

  indexOf() lastIndexOf()   //查找元素第一次出现的位置 返回下标 indexOf从第一个查 lastIndexOf从最后一个查

例子:

var arr = [1,3,5,7,7,5,3,1];
console.log(arr.indexOf(5)); //2
console.log(arr.lastIndexOf(5)); //5
console.log(arr.indexOf(5,2)); //2
console.log(arr.lastIndexOf(5,4)); //2
console.log(arr.indexOf("5")); //-1

数组遍历:

var arr = [‘zhangsan‘,‘wangwu‘,‘zhaoliu‘];

for(var i =0;i<arr.length;++i){
		arr[i] = arr[i] +123;
}
//数组遍历 for(var i in arr){ arr[i]; }

  

一维数组   二维数组  多维数组
  数组的元素是一个一维数组

  把一个数组当另一个数组的元素

//二维数组
var arr = []; arr.push([123,123,123]); arr.push([234,234,234]); console.log(arr);
//结果为 [   [1231,1232,1233],   [234,234,234] ]
//简写提取 arr[0][1]//0为选第一行数组的元素,1为选第一行数组的第二个元素

  

 

 

 

数组例题:

 青歌赛打分、20位评委给一个选手打分、去掉一个最高分、去掉一个最低分求平均得分、去掉两个分

var arr = [50,40,41,21,53,43,46,48];
var max =arr[0];//最高分
var min =arr[0];//最低分
var sum =0;//总分
for(var i=0;i<arr.length;++i){
    sum += arr[i];//各项的和
  //比较大小,交换
  //最高分 if(max< arr[i]){    max=arr[i];  } 
  //最低分
   if(min > arr[i]){    min = arr[i]; } }
var avg = (sum-max-min)/(arr.length-2);//求平均分 console.log("平均分:"+avg+";最高分:"+max+";最低分:"+min);

 改错:

4、html中、创建表格标签是   A

A、<table>....</table>   B、<tr>...</tr>(行,表格元素)  C、<td>...</td>(列显示,表格元素)  D、<p>....</p>(段落)

8、设置表格跨列显示的属性    B

A、Rowspan(跨行纵向合并)  B、Colspan(跨列,横向合并单元格)  C、Rows (规定文本区域内可见的行数。)          D、cols(规定文本区域内可见的列数)

9、用于在网页中创建表单的标签c

A、<input>(表单元素)      B、<select>(单选元素)   C、<form>(表单标签)  D、<textarea>(多行文本)

11、checked属性适用于哪个表单元素AB

A、<input type=”radio”>(单选)  B、<input type=”checkbox”>(多选)

C、<input type=”text”>(文本)  D、<input type=”button”>(按钮)

13、哪些属性用于<textarea>标签AD

A、Cols  (规定文本区域内可见的列数)        B、Size    C、Type     D、Rows(规定文本区域内可见的行数。) 

下面关于列表属性描述正确的是D

A、list-type-image可以使用图像代替列表项标记  list-style-image

B、List-type可以设置列表项的类型      list-style-type

C、List-position:inside标志表示项目标放在文本以外list-style-position:

D、List-style可以吧列表所有属性设置与一个声明中

24、可以隐藏元素的选项B

A、display:block B、Display:none消失  C、display:hidden      改: visibility:hidden影响布局  D、display:hide

反省:

  1.认真读题,看清题意。

  2.多思考,多做练习巩固。

  3.认真对待每一次考试,根据自己情况调整,看自己前进退步多少,多努力;

  4.慢慢养成每天做练习的习惯,写好总结,记好笔记,贵在持之以恒,笨鸟先飞,成功路上无捷径;

  5.多和同学交流,互换想法,汲取经验。

  6.每天拿出十分钟回顾之前学的,查看博客,笔记,多看一下资料教学; 

 





















以上是关于JS数组的主要内容,如果未能解决你的问题,请参考以下文章

几个关于js数组方法reduce的经典片段

JS常用代码片段-127个常用罗列-值得收藏

web代码片段

javascript js数组找到片段

JavaScript笔试题(js高级代码片段)

为什么我不能在此片段中生成唯一对象数组?