首页 > 其他分享 >集合引用类型

集合引用类型

时间:2023-06-01 14:46:22浏览次数:39  
标签:zeroes console log 索引 类型 ints 引用 数组 集合

一、集合引用类型

对象
数组与定兴数组
Map、WeakMap、Set、WeakSet类型

1.1 Object
显示创建Object:

1、两种方式new 操作符和Object 构造函数

let person = new Object();
person.name = "Nicholas";
person.age = 18;

2、使用对象字面量

let person = { 
  name: "Nicholas", 
  age: 29 
};

第8章将更全面、深入地介绍 Object 类型

1.2 Array
Array.isArray() 方法。这个方法的目的就是确定一个值是否为数组,而不用管它是在哪个全局执行上下文中创建的。来看下面的例子:

if(Array.isArray(value)){
    // 操作数组
}

Array的迭代器

keys() 、 values() 和 entries() 。 keys() 返回数组索引的迭代器, values() 返回数组元素的迭代器,而 entries() 返回索引/值对的迭代器:

const a = ["foo", "bar", "baz", "qux"]

// 因为这些方法都返回迭代器,所以可以将它们的内容 
// 通过Array.from()直接转换为数组实例 
const aKeys = Array.from(a.keys()); 
const aValues = Array.from(a.values()); 
const aEntries = Array.from(a.entries()); 
 
console.log(aKeys);     // [0, 1, 2, 3] 
console.log(aValues);   // ["foo", "bar", "baz", "qux"] 
console.log(aEntries);  // [[0, "foo"], [1, "bar"], [2, "baz"], [3, "qux"]]
const a = ["foo", "bar", "baz", "qux"]; 
for (const [idx, element] of a.entries()) {
  alert(idx); 
  alert(element); 
}

复制和填充数组

批量复制方法 fill()

const zeroes = [0, 0, 0, 0, 0]; 
 
// 用5填充整个数组 
zeroes.fill(5); 
console.log(zeroes);  // [5, 5, 5, 5, 5] 
zeroes.fill(0);       // 重置 
 
// 用6填充索引大于等于3的元素 
zeroes.fill(6, 3); 
console.log(zeroes);  // [0, 0, 0, 6, 6] 
zeroes.fill(0);       // 重置

// 用7填充索引大于等于1且小于3的元素 
zeroes.fill(7, 1, 3); 
console.log(zeroes);  // [0, 7, 7, 0, 0]; 
zeroes.fill(0);       // 重置 
 
// 用8填充索引大于等于1且小于4的元素 
// (-4 + zeroes.length = 1) 
// (-1 + zeroes.length = 4) 
zeroes.fill(8, -4, -1); 
console.log(zeroes);  // [0, 8, 8, 8, 0];

fill() 静默忽略超出数组边界、零长度及方向相反的索引范围:

const zeroes = [0, 0, 0, 0, 0]; 
 
// 索引过低,忽略 
zeroes.fill(1, -10, -6); 
console.log(zeroes);  // [0, 0, 0, 0, 0] 
 
// 索引过高,忽略 
zeroes.fill(1, 10, 15); 
console.log(zeroes);  // [0, 0, 0, 0, 0] 
 
// 索引反向,忽略 
zeroes.fill(2, 4, 2); 
console.log(zeroes);  // [0, 0, 0, 0, 0] 
 
// 索引部分可用,填充可用部分 
zeroes.fill(4, 3, 10) 
console.log(zeroes);  // [0, 0, 0, 4, 4]

填充数组方法copyWithin()

let ints, 
    reset = () => ints = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 
reset(); 
 
// 从ints中复制索引0开始的内容,插入到索引5开始的位置 
// 在源索引或目标索引到达数组边界时停止 
ints.copyWithin(5); 
console.log(ints);  // [0, 1, 2, 3, 4, 0, 1, 2, 3, 4] 
reset(); 
 
// 从ints中复制索引5开始的内容,插入到索引0开始的位置 
ints.copyWithin(0, 5); 
console.log(ints);  // [5, 6, 7, 8, 9, 5, 6, 7, 8, 9] 
reset(); 
 
// 从ints中复制索引0开始到索引3结束的内容 
// 插入到索引4开始的位置 
ints.copyWithin(4, 0, 3); 
alert(ints);  // [0, 1, 2, 3, 0, 1, 2, 7, 8, 9] 
reset(); 
 
// JavaScript引擎在插值前会完整复制范围内的值 
// 因此复制期间不存在重写的风险 
ints.copyWithin(2, 0, 6); 
alert(ints);  // [0, 1, 0, 1, 2, 3, 4, 5, 8, 9] 
reset(); 
 
// 支持负索引值,与fill()相对于数组末尾计算正向索引的过程是一样的 
ints.copyWithin(-4, -7, -3); 
alert(ints);  // [0, 1, 2, 3, 4, 5, 3, 4, 5, 6]

数组的转换方法

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

let colors = ["red", "green", "blue"]; 
alert(colors.join(","));     // red,green,blue 
alert(colors.join("||"));    // red||green||blue

数组的栈方法

数组对象可以像栈一样,也就是一种限制插入和删除项的数据结构
栈是一种后进先出(LIFO,Last-In-First-Out)的结构,也就是最近添加的项先被删除。数据项的插入(称为推入,push)和删除(称为弹出,pop)只在栈的一个地方发生,即栈顶。
ECMAScript数组提供了push()和pop()方法,以实现类似栈的行为。

push() 方法接收任意数量的参数,并将它们添加到数组末尾,返回数组的最新长度

pop() 方法则用于删除数组的最后一项,同时减少数组的 length值,返回被删除的项。

let colors = new Array()

//推入两项
let count = colors.push("red","green");
// 获取最后一项
let item = colors.pop(); // green
console.log(colors) // red

列队方法

shift() 获取第一项并删除
unshift() 在数组开头添加任意值,并返回数组长度

排序方法(2个)

reverse()从大到小排序

let values = [1, 2, 3, 4, 5]; 
values.reverse(); 
alert(values);  // 5,4,3,2,1

sort()
会在每一项上调用String()转型函数,然后比较字符串来决定顺序。即使数组的元素都是数值,也会先把数组转换为字符串再比较、排序。

let values = [0, 1, 5, 10, 15]; 
values.sort(); 
alert(values);  // 0, 1, 10, 15, 5

数组的操作方法

concat()

let colors = ["red", "green", "blue"]; 
let colors2 = colors.concat("yellow", ["black", "brown"]); 
console.log(colors); // ["red", "green","blue"]
console.log(colors2); // ["red", "green", "blue","yellow", "black", "brown"]

标签:zeroes,console,log,索引,类型,ints,引用,数组,集合
From: https://www.cnblogs.com/yx-liu/p/17448923.html

相关文章

  • 2-1-1python语法基础--基础-数据类型-数字
    列举布尔值为False的常见值?1,布尔型,False表示False,其他为True2,整数和浮点数,0表示False,其他为True3,字符串和类字符串类型(包括bytes和unicode),空字符串表示False,其他为True4,序列类型(包括tuple,list,dict,set等),空表示False,非空表示True5,None永远表示False浮点数保留两位小数,并做四......
  • 【python基础】复杂数据类型-列表类型(增删改查)
    1.初识列表(list)列表由一系列按特定顺序排列的数据元素组成。可以将任何类型数据元素加入列表中,其中的数据元素之间没有任何关系。鉴于列表通常包含多个数据元素,给列表指定一个表示复数的名称是个不错的选择。在python中,用方括号[]来表示列表,并用逗号来分隔其中的数据元素。编写......
  • 【博学谷学习记录】超强总结,用心分享 | 集合
    【博学谷IT技术支持】集合集合根据存储分为单列集合java.util.Collection和双列结合java.util.Map,集合的长度是可变的,集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类。数组可以存基本数据类型和引用数据类型Collection单列集合的跟接口,用于存储一系列......
  • 【博学谷学习记录】超强总结,用心分享 | python基础学习(数据类型,运算符)
    【博学谷IT技术支持】基础数据类型Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建赋值方式直接赋值a=1#整型变量b=1.0#浮点型变量c='abc'#字符串多个赋值a=b=c=1a,b,c=1,2,3标准数据类型标准数据类型......
  • javascript 的 事件类型(事件)
    事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行。事件是文档或者浏览器窗口中发生的,特定的交互瞬间。事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字。事件是javaScript和DOM之间交互的桥梁。你若触发,我便执行——事件发生,调用......
  • 变更线上数据库表字段类型之方案
    假设yy_yp_yppcmx表,rkpcs字段最初设计的类型为varchar,上线后由于业务中传入数据较长,varchar类型已经装不下了(比如Oracle中varchar超过4K,将自动转为long类型,会导致插入失败),急需将该字段改为CLOB类型,稳妥的步骤如下:新增一个临时字段类型是CLOB的ALTERTABLEyy_yp_yppcmxADD......
  • MyBatis+Sharding-JDBC实体类LocalDateTime类型字段查询报SQLFeatureNotSupportedExce
    问题最近协助渠道组开发新需求,封装实现了一个公共模块供不同渠道项目使用。以前各个渠道项目有很多相似的菜单和功能,各自项目里自己的代码实现,本公共模块对新需求的功能点进行抽象,减少重复代码,提高模块复用性和可维护性。目前有2个渠道项目接入了该公共模块,自测时发现其中1个运......
  • Hive中的表类型
    在Mysql中没有表类型这个概念,因为它就只有一种表。但是Hive中是有多种表类型的,我们可以分为四种,内部表、外部表、分区表、桶表下面来一个一个学习一下这些类型的表内部表内部表也可以称为受控表,它是Hive中的默认表类型,表数据默认存储在warehouse目录中。在加载数据的过程中,......
  • Spider理论系列--Redis(值得类型)
    Redis值的类型字符串String哈希hash列表list集合set有序集合zset数据操作的全部命令:http://redis.cn/commands.htmlconfiggetdatabases查看所有的数据库数据库以0开始一共16个(1)String概述:String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可......
  • python基础(变量、数据类型)
    python简介Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。python变量什么是变量:在python中,变量其实严格意义上称作为“名......