ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript数组采坑

2021-07-24 21:30:49  阅读:151  来源: 互联网

标签:arr console log 采坑 JavaScript undefine let 数组


长度

JS 数组长度不是里面包含了多少个元素,为数组中元素最大索引加一


const arr = [];

arr[20] = 1;

console.log(arr.length) // log: 21
console.log(arr[0]) // log: undefine

// 可使用 数组的length属性去清空元素
let arr1 = [1, 2, 3, 4, 5, 6, 7];

// 保留四个元素
arr1.length = 4;
console.log(arr1) // log: [ 1, 2, 3, 4 ]

// 清空数组
arr1.length = 0;
console.log(arr1); // log: []

遍历

使用 for…in 和 forEach() 遍历都会跳过空元素(undefine)
使用 for…of 和 for 遍历,依然会遍历空元素


let arr = [1, 2];

arr[5] = 5;

for(let i = 0; i < arr.length; i++) {
  console.log(arr[i]);  
}
// log: 1 2 undefine undefine undefine 10

for(let site of arr) {
  console.log(site)
}
// log: 1 2 undefine undefine undefine 10

for(let key in arr) {
  console.log(arr[key]);
}
// log: 1 2 5

arr.forEach(value => {
  console.log(value);
})
// log: 1 2 5

关于数组的计算属性

const arr = [];
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;

// 数组计算属性的用法
arr["property" + "1"] = "数组的计算属性";

// 可以通过属性名得到数组值
console.log(arr.property1); // log:数组的计算属性

// 当你给你的数组加了一个计算属性后,再用for...in 来遍历数组
for(let index in arr) {
  console.log(arr[index]);
}
// log: 0 1 2 3 数组的计算属性

// 再看看数组的长度
console.log(arr.length); // log: 3

不要使用 === 去判断数组相等,或判断否空数组

记住,数组也是对象

const arr= []

// 全等时
console.log(arr === []); // log: false
console.log(arr === 0); // log: false
console.log([1] === [1]) // log: false

// 使用相等时
console.log(arr == 0) // log: true 
console.log(arr == '') // log: true 
console.log(arr == []) // log: false
console.log(arr == null) // log: false
console.log([1] == [1]) // log: false

标签:arr,console,log,采坑,JavaScript,undefine,let,数组
来源: https://blog.csdn.net/qq_44045519/article/details/119064139

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有