Array学习第四天

211 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

转换方法

所有对象都有toLocaleString()、toString()和 valueOf()方法,valueOf()返回的还是数组本身。toString()返回由数组中每个值的等效字符串拼接而成的一个逗号分隔的字符串。对数组的每个值都会调用其 toString()方法。

let study = ["web", "java", "php"]; // 创建一个包含 3 个字符串的数组
console.log(study.toString()); // web,java,php
console.log(study.valueOf()); // web,java,php
console.log(study); // web,java,php

toLocaleString()方法也可能返回跟 toString()和 valueOf()相同的结果,例如

let num1 = {
    toLocaleString() {
        return "1";
    },
    toString() {
        return "2";
    }
};

let num2 = {
    toLocaleString() {
        return "3";
    },
    toString() {
        return "4";
    }
};
let num = [num1, num2];
console.log(num); // 2,4
console.log(num.toString()); // 2,4
console.log(num.toLocaleString()); // 1,3

定义了两个对象,而且都定义了toString和toLocaleString方法,而且返回值也不一样。我们又定义了num来接收两个值,发现调用两个方法,获取到的值也不同。

注意:如果数组中某一项是 null 或 undefined,则在 join()、toLocaleString()、toString()和 valueOf()返回的结果中会以空字符串表示。

栈方法

栈是一种后进先出(LIFO,Last-In-First-Out)的结构,也就是最近添加的项先被删除。数据项的插入(称为推入,push)和删除(称为弹出,pop)。数组中可以使用push()和 pop()方法。

let num = nums.push("1", "2"); // 推入两项
console.log(num); // 2
count = nums.push("3"); // 再推入一项
console.log(num); // 3
let item = nums.pop(); // 取得最后一项
console.log(item); // 3
console.log(colors.length); // 2

队列方法

队列以先进先出(FIFO,First-In-First-Out)形式限制访问。队列在列表末尾添加数据,但从列表开头获取数据。数组中可以使用shift()和 push()。

let nums = new Array(); // 创建一个数组
let num = nums.push("1", "2"); // 推入两项
console.log(num); // 2
num = nums.push("3"); // 再推入一项
console.log(num); // 3
let item = nums.shift(); // 取得第一项
console.log(item); // 1
console.log(nums.length); // 2

ECMAScript 也为数组提供了 unshift()方法。顾名思义,unshift()就是执行跟 shift()相反的操作。