资讯专栏INFORMATION COLUMN

JavaScript数组(上)

Harpsichord1207 / 1129人阅读

摘要:可以模仿栈和队的进入方式队先进先出队后进后出栈后进先出栈先进后出将数组以特定字符串连接,并返回字符串,默认以逗号连接。如数组成员为空位,或这三者将以空串代替。改变原数组排列方式会改变原数组,进行升序和降序。

数组篇 定义方式

通过构造函数,new一个array,可以填写参数,一般除数字外不建议填

let arr = new Array();
let arr1 = new Array(3);  //代表length为3,键值都是空位
0 in arr1;                //false,因为是空位,所以不存在索引,数组会忽略尾部逗号

通过字面量定义

let arr = [1,2,3,4,5,56]
数组类型判定

typeof,不建议,最客观也只返回object

let arr = [1,2];
typeof arr        //object

instanceof,不是最佳,原因是instanceof的原理是通过原型链判断两边是否相等,但是在多框架下,a框架下的数组原型在b框架下就不一定了

arr instanceof Array;    //true
a instanceof b;     
//a.__proto__.proto__.... === b.prototype;a通常为对象,b为构造函数

Array.isArray(),能解决第二种的问题

Array.isArray(arr);     //true
数组属性-length

增加数组长度

let arr = [1,2,3];
arr.length = 4;
3 in arr;            //false
arr[3] = undefined;  //能增加length值,键值为undefined
3 in arr;            //true,

减少数组长度

let arr = [1,2,3];
arr.length = 2;
console.log(arr[2]);    //undefined
arr.length = 0;        //最简单的清空方式,[]
数组方法

valueof(),toString(),通常用于数组对象转换成别的数据类型,arr.valueof().toString()

push,pop,shift,unshift,4种方法都能改变原数组,前两个速度快,因为检索位置是尾部,后两者是首部。可以模仿栈和队的进入方式:

队先进先出:

let arr = [];
arr.push(1);
arr.push(2);   //[1,2]
arr.shift()    //[2]

队后进后出:

let arr = [];
arr.unshift(1);
arr.unshift(2);   //[2,1]
arr.pop();        //[2]

栈后进先出:

let arr = [];
arr.unshift(1);
arr.unshift(2);     //[2,1]
arr.shift();        //[1]

栈先进后出:

let arr = [];
arr.push(1);
arr.push(2);         //[1,2]
arr.pop();           //[1]

join(),将数组以特定字符串连接,并返回字符串,默认以逗号连接。如数组成员为空位,undefined或null,这三者将以空串代替。

let arr = [,undefined,null];
arr.join(";");   //;;
let arr1 = [1,,2];
arr1.join(".");  //1..2

concat(),将括号内参数与原数组进行拼接,返回新数组,原数组不变,参数类型不固定个数不固定。是浅拷贝,如参数为对象拷贝的是索引。

let arr = [1];
let obj = {a: 2};
let new_arr = arr.concat("123",obj); 
obj.a = 3;
console.log(new_arr);         //[1, "123", {a: 3}]

sort(), reverse(),改变原数组排列方式(会改变原数组),进行升序和降序。它是先将元素转为字符串,按首个字符的u码进行排列,这就导致排列出错。sort()可以添加传入一个函数作为参数,将排序进行改进

let arr = [1, 2, 12, 3, 4];
arr.sort();             //[1, 12, 2, 3, 4]
let arr = [1, 2, 12, 3, 4];
arr.sort(function (a, b) {
    return a - b;     //<0,在前;>0,在后;=0不变;
});
console.log(arr);    //[1, 2, 3, 4, 12],

slice()与splice(),
slice(start, end),类似切片截取,返回截取的新数组,原数组不变,两个参数前闭后开,是浅拷贝
splice(start, count, addElement1, addElement2, ...),从start开始删除,数量为count,接着添加后面的元素; 若填写一个参数则 count默认length-arg-1,即删到末尾;返回被删除的数组,原数组改变

let arr = [1, 2, 3, 4, 5];
arr.slice();             //[1, 2, 3, 4, 5]
arr.slice(1, -1);        //[2, 3, 4]
arr.slice(0, 5);         //[1, 2, 3, 4, 5]  
arr.slice(2, 1);         //error, 前者不能大于后者(同+-符号) 
let arr = [1, 2, 3, 4];
let del = arr.splice(1, 3, "345", 67);
console.log(arr);                //[1, "345", 67]
console.log(del);                //[2, 3, 4]
let arr1 = [1, 2, 3, 4, 5];
arr1.splice(1);
console.log(arr1);               //[1]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98133.html

相关文章

  • Array的javascript数据结构描述

    摘要:几乎所有的编程语言都有类似的数据结构。然而的数组却略有不同。没有定义中说的那样的数据结构,作为替代。元素通过指定的分隔符进行分隔。返回该对象的源代码。把数组转换为本地数组,并返回结果。 写在前面的话: 经常看到技术博客上写的内容很详细,对于一个问题,大家的博客内容似乎都是一样的。不难发现这些技术博客已经成为各路教程的汇总地,而教程一般都是参考国外博客翻译或者直接在经典的书籍上大片抄录。...

    iOS122 评论0 收藏0
  • JavaScript专题系列文章

    摘要:专题系列共计篇,主要研究日常开发中一些功能点的实现,比如防抖节流去重类型判断拷贝最值扁平柯里递归乱序排序等,特点是研究专题之函数组合专题系列第十六篇,讲解函数组合,并且使用柯里化和函数组合实现模式需求我们需要写一个函数,输入,返回。 JavaScript 专题之从零实现 jQuery 的 extend JavaScritp 专题系列第七篇,讲解如何从零实现一个 jQuery 的 ext...

    Maxiye 评论0 收藏0
  • task0002(一)- JavaScript数据类型及语言基础

    摘要:不过让流行起来的原因应该是是目前所有主流浏览器上唯一支持的脚本语言。经过测试,数字字符串布尔日期可以直接赋值,修改不会产生影响。再考虑对象类型为或者的情况。对于结果声明其类型。判断对象的类型是还是,结果类型更改。 转载自我的个人博客 欢迎大家批评指正 1. 第一个页面交互 这里最需要学习的老师的代码中,每一部分功能都由函数控制,没有创建一个全部变量。且最后有一个函数来控制执行代码...

    elarity 评论0 收藏0
  • JavaScript 是如何工作的:JavaScript 的内存模型

    摘要:调用堆栈是存放原始数据类型的地方除了函数调用之外。上一节中声明变量后调用堆栈的粗略表示如下。解释改变的正确方法是更改内存地址。在声明时,将在调用堆栈上分配内存地址,该值是在堆上分配的内存地址。 这是专门探索 JavaScript 及其所构建的组件的系列文章的第 21 篇。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 如果你错过了前面的章节,可以在这里找到它们:...

    baoxl 评论0 收藏0
  • JavaScript学习总结(二)数组和对象部分

    摘要:属性是一个值或一组值以数组或对象的形式,是对象的成员。可以使用内置构造函数和创建包装对象。因此下面的代码将会使人很迷惑结果结果,此数组长度为应该尽量避免使用数组构造函数创建新数组。给数组对象添加返回数组中最大元素值的方法。 对象部分 Object类型 Object 是一个无序的集合,可以存放任意类型对象,所有其他对象都继承自这个对象。创建Object类型有两种,一种是使用new运算符,...

    Lsnsh 评论0 收藏0
  • JavaScript数组

    摘要:与稀疏数组对立的为密集数组,密集数组的索引会被持续的创建,并且其元素的数量等于其长度。创建一个长度为的数组,并初始化了个元素使用构造函数创建数组对象的时候,关键字是可以省略的。另外使用和删除元素是影响数组的长度的。 说明:本文只总结了JavaScript数组在web端的行为,不包括NodeJs端的行为。本文不涉及类型化数组(TypedArray)的讨论、总结。 一、什么是数组 数组的定...

    HtmlCssJs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<