数组

数组

  • 创建数组的方法
  • 1:字面量表示法 : var arr = [];
  • 2: 实例化数组: var arr = new Array();
  • 当 new Array() 的参数只有一个,并且这个参数是一个数字的时候,那么代表创建一个长度为这个数字的空数组
1: var arr = [];  // []
2: var arr = new Array(1,2,3);    //  (3) [1, 2, 3]
3: var arr = new Array(6);      // [empty × 6]
判断是否是数组
  • Array.isArray(数据) ; 可以判断这个数据是不是数组,如果是那么就返回true,否则就是false
1: console.log(typeof []);  // 'object'

2: console.log(typeof {});  // 'object'

3:  function test(){
      var arr = [];
      var obj = {};
      console.log(Array.isArray(arr));         // true
      console.log(Array.isArray(arguments));   // true 
      console.log(Array.isArray(obj));        // false
    }
    test();

数组的方法

标签(空格分隔): array()


concat();
  • cancat(); 方法用于连接两个数组或多个数组,该方法不会改变现有的数组,而仅仅会返回连接数组的一个副本。
1: 把两个数组连接起来;
var arr1 = [1,2,3,4];
var arr2 = [4,5,6,7,8];
arr1.concat(arr2);
(9) [1, 2, 3, 4, 4, 5, 6, 7, 8]
arr1;
(4) [1, 2, 3, 4]
arr2;
(5) [4, 5, 6, 7, 8]

//--------------------------------------------
例2: 把concat的参数连接到数组arr1中
var arr1 = [1,2,3,4];
undefined
arr1.concat(8,9);   //[1, 2, 3, 4, 8, 9];


//--------------------------------------------
例 3: 连接多个数组;
var a = [1,2];
undefined
var b = [3,4];
undefined
var c = [5,6];
undefined
a.concat(b,c);   //  [1, 2, 3, 4, 5, 6];
join(); 方法; 将数组转换成字符串 原数组不会改变
  • join()方法用于把数组中所有的元素放入到一个字符串中,元素通过指定的分隔符进行分割;
  • 语法:arrayObject.join(separator(参数的意思)); separator(可选);指定要使用的分隔符,如果省略该参数则使用逗号作为分隔符;
  • 返回值:返回一个字符串。该字符串是通过把arrayObject的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
1:创建一个数组,然后把它的所有元素放入一个字符串
var arrt = ['hello','boy','every'];
arrt.join();   //  "hello,boy,every"   默认使用逗号分隔开   

例如2:创建一个数组,使用分隔符来来分割数组中的元素;
var arr1 = [1,2,3,4];
var str = arr1.join(':');  // "1:2:3:4"3:arr1.join('');

var arr1 = [1,2,3,4];
arr1.join('');  //    //   "1234"


//额外内容
var arr1 = [1,2,3,4];
arr1.toString();  // "1,2,3,4";
  • pop()方法用于删除并返回数组的最后一个元素;
  • 语法:arrayObject.pop();
  • 返回值:arrayObject 的最后一个元素(也就是删除的那个元素);
  • pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。

var arr1 = [1,2,3,4];
arr1.pop();  // 4
console.log(arr1)   //(3) [1, 2, 3];

var attr = ['hello','boy'];
attr.pop();   // "boy"
attr;   //["hello"]

例2:如果数组为空; pop() 不改变数组,并返回 undefined 值
var attr2 = [];
attr2.pop();   //  undefined
push 向数组末尾添加一个或者多个元素 返回值是数组新的length长度;
  • push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度;
  • 语法 : arrayObject.push(newelement1,newelement2,….,newelementX);
  • 返回值: 把指定的值添加到数组后的新长度。
  • 说明: push() 方法可把它的参数顺序添加到arrayObject的尾部。它直接修改arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。
    • 提示:要想数组的开头添加一个或多个元素,请使用 unshift() 方法。

1:arr3.push(1);
var arr3 = [1,2,3,4];
arr3.push(1);//  (5) [1, 2, 3, 4, 1];

例2 push 一个数组;
var arr1 = [1,2,3,4];
var attr = ['hello','boy'];
arr1.push(attr);  //  (5) [1, 2, 3, 4, Array(2)]  //   [1, 2, 3, 4, ['hello','boy']];
arr1[4][1];  //   "boy";

例3: push 一个对象;
var obj = {a:1};
arr1.push(obj);  // length 6 ;
arr1[5].a; // 1;
arr1[5].a = 2;  // (6) [1, 2, 3, 4, Array(2), {a:2}]
reverse // 翻译 ; 反转;颠倒
reverse()方法;
  • 语法:arrayObject.reverse();
  • 该方法会改变原来的数组,而不会创建新的数组;
    eg: var arr3 = [1,2,3,4];
    arr3.reverse(); //[4, 3, 2, 1]
    arr3 = [4, 3, 2, 1];
shift();—————-》shift 翻译 删除 去掉的意思
  • shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值;
  • 语法:arrayObject.shift();
  • 返回值:是原来数组的第一个元素的值;
  • 说明:如果数组是空的那么shift()方法将不进行任何操作;返回undefined ;
    该方法不创建新数组,而是直接修改原来的数组;
var arr = ['hello','a','b',1];
arr.shift();   // 'hello';
console.log(arr);   //   ["a", "b", 1]
unshift();
  • unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度。
var arr = [];
arr.unshift(1, 2, 3);
console.log(arr);  // [1, 2, 3]
slice 翻译:切成片; 切下; 划分;

slice(start,end)方法; // 浅拷贝
  • slice() 方法可从已有的数组中返回选定的元素。
  • 语法:arrayObject.slice(start,end); 包含开始位置但是不包含结束位置
  • slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array

  • start 必需 *规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。*

  • end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

  • 返回值 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

  • 提示:如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。

请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
splice() 向数组中添加或者删除项目
  • splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
  • 注释:该方法会改变原始数组
  • 语法:arrayObject.splice(index,deleteCount,item1,…..,itemX);
    index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。deleteCount 必需。要删除的项目数量。如果设置为 0,则不会删除项目。deleteCount: 整数,表示要移除的数组元素的个数。如果 deleteCount 是 0,则不移除元素。这种情况下,至少应添加一个新元素。如果 deleteCount 大于start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。item1, ..., itemX 可选。向数组添加的新项目。
  • item1, item2, … 要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。
  • 返回值:包含被删除项目的新数组,如果有的话
  • 说明:splice() 方法可删除从index处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从arrayObject中删除了元素,则返回的是含有被删除的元素的数组;
1:创建一个新数组,并向其添加一个元素;
 var  arr1 = ['whats','name'];
 arr1.splice(1,0,'your');
 arr1  // (3) ["whats", "your", "name"];

 var arr = ['a', 'b', 'c'];
 console.log(arr.splice(1, 1));  // ['b']  从第一个开始移除 ,移除一个返回值就是移除的这个数组

     var arr = ['a', 'b', 'c'];

    console.log(arr.splice(1, 1));  // ['b']
    console.log(arr);  // ["a",'c']

    console.log(arr.splice(1, 1, 1, 2));
    console.log(arr);  // ['a',1,2]

    console.log(arr.splice(2));  // [2]   如果只有一个值得:表示的是从第几个开始删除;包含
    console.log(arr);  //  ["a", 1]
sort();
  • sort()用于对数组的元素进行排序;
  • 语法:arrayObject.sort(sortby);
  • 参数:sortby 规定排序的顺序,必须是函数;
  • 返回值:对数组的引用 (是在原数组上进行排序,不生成副本);
// 从小到大排序
function fn1(){
    return a-b;
};

var arr = [1,6,5,4];
arr.sort(fn1);  // arr = [1,4,5,6];

// 从大到小排序

function fn1(){
    return b-a;
};
var arr = [1,6,5,4];
arr.sort(fn1);  // arr = [6541];
indexOf 方法;

与 String 类似 , Array 也可以通过 indexOf()来搜索一个指定元素的位置;

  • 如果找到则返回找到的索引,没有找到则返回 -1;
var arr = [10,20,'30',''];
arr.indexOf(10);  //  返回的索引值值为0;
arr.indexOf(30);  // 没有找到30,返回 -1
数组的方法操作;
##### 克隆数组clone
var ary = [1,2,3];
var ary1 = ary.concat(); // 第一种方法
var ary2 = ary.slice(0);  // 第二种方法
var ary3 = ary; // 这个不是复制,这个是引用
查找一个字符串中出现次数最多的字符,统计这个次数
将类数组转换成 数组
  • Array.from(类数组)
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <script>
  var divs = document.querySelectorAll('div');
  console.log(divs) // NodeList(4) [div, div, div, div]   类数组
  console.log(Array.isArray(divs));   // false
  divs = Array.from(divs);
  console.log(divs);   //  [div, div, div, div]
  console.log(Array.isArray(divs));  // true

  divs.length--;

  console.log(divs);

  </script>

数组遍历

forEach(); 返回值 - undefined
  • arr.forEach(cb,[thisArg])
  • callback 为数组中的每一个元素执行的(函数),该函数接受三个参数:
  • thisArg: 可选参数。当执行回调 函数时用作this的值(参考对象)。
  • 返回值: undefined
参数1:currentValue(当前值) 数组中正在处理的当前元素。
参数2:index(索引) 数组中正在处理的当前元素的索引。
参数3:array forEach()方法正在操作的数组。

举个栗子

    arr.forEach(function (item, index, self){
      console.log(item, index);   // item  就是数组中的每一项, index 就是数组中每一项的索引值
      console.log(self);  //  就是当前的数组
      console.log(this);  //  thisArg 传入的是谁就指向谁 - document
    }, document);
map 的返回值是一个新数组
  • arr.forEach(cb,[thisArg])
  • callback 为数组中的每一个元素执行的(函数),该函数接受三个参数:
  • thisArg: 可选参数。当执行回调 函数时用作this的值(参考对象)。
  • 返回值: 新数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值