首页 > 其他分享 >js踩坑记录-数组

js踩坑记录-数组

时间:2022-11-04 11:03:32浏览次数:94  
标签:arr console log 记录 js forEach 数组 array


数组比较

eg1:

js踩坑记录-数组_python

以为打印出的是true,但是是false,原因是数组是引用数据类型,比较的时候比较的是地址,所以是不相等的。在C++中,数组也是不能通过这种方式比较的。
但是python是可以的。

那要如何进行数组比较呢?

如果是比较全数组,可以转化为字符串进行比较:

JSON.stringify(array1) === JSON.stringify(array2)

或者遍历数组比较。

遍历数组

方法一:for 下标访问

for (let i = 0; i < arr.length; ++i) {
console.log(arr[i]);
}

方法二: for in

for (let i in arr) {
console.log(arr[i]);
}

这里注意与python的in不一样,python中

for i in arr:
print(i)

这个迭代器指的是数组的值,而不是索引。

方法三:of 直接访问值

for (const v of arr) {
console.log(v);
}

方法四:forEach 同时访问值与索引

arr.forEach((v, i) => console.log(v));

非数字属性

JavaScript 的数组就是 Object,这就意味着我们可以给数组添加字符串属性:

举例如下:

js踩坑记录-数组_python_02

上面的循环语法,只有for/in不会忽略非数字属性。

数组的空元素

JavaScript 数组可以有空元素

如下:

js踩坑记录-数组_遍历数组_03


数组的长度是4。

添加空元素

array[5] = "a";

js踩坑记录-数组_遍历数组_04

对于数组里的空元素来说,遍历方式也是有区别的。
eg:

for (let i = 0; i < array.length; i++) {
console.log(array[i]);
}

js踩坑记录-数组_数组_05

其他遍历方式:

// 打印1 2 3
array.forEach(v => console.log(v));

// 打印1 2 3
for (let i in array) {
console.log(array[i]);
}

// 打印1 undefined 2 3
for (const v of array) {
console.log(v);
}

所以:

  1. 对于[1, 2,3],for/in与forEach会跳过空元素,而for与for/of则不会跳过
  2. 对于[‘a’, undefined, ‘c’],4 种循环语法一致,打印的都是”a, undefined, c”


标签:arr,console,log,记录,js,forEach,数组,array
From: https://blog.51cto.com/u_15861560/5822297

相关文章

  • 使用 Alice inspector 和 Dio 进行 Flutter API 日志记录
    使用Aliceinspector和Dio进行FlutterAPI日志记录前言有没有发现自己处于这样的情况下,当一个特性被显示或者一个方法被触发时,你必须找出哪个API被调用?我就当......
  • 2022-11-04 js foreach 三重循环
    letarr=[];req.data.forEach((e,k1)=>{letobj={};obj.value=e.content;obj.children=[];obj.expand=false;if(e.children){e.child......
  • 为什么JSON.parse会损坏大数字,如何解决这个问题?
    为什么大数字会被JSON.parse破坏?像 9123372036854000123 这样的长数字既是有效的JSON也是有效的JavaScript。当JavaScript将数值解析为数字时,事情就出错了。最初,Jav......
  • gimp脚本.scm一些心得记录
    gimp的脚本scm一些心得记录GIMP2.10图像处理脚本推荐GIMP使用脚本使得图像处理的功能更加强大,对于一些常见操作可以通过脚本快速实现。GIMP也出来2.10版本了,比前面的2.8......
  • 类与数组,指针
    #pragmaonce#include<iostream>#include<algorithm>usingnamespacestd;classvectorInt{public:vectorInt(intlen):length{len}{......
  • JS模拟给按钮上锁
    为了防止用户连续点击一个按钮而导致代码处理错乱,可参考以下代码为按钮上锁:varfeedbtnlock=0;if(feedbtnlock==0){feedbtnlock=1;setTimeout(function(......
  • JS优化
    1.带有多个条件的if语句把多个值放在一个数组中,然后调用数组的includes方法。//longhandif(x==='abc'||x==='def'||x==='ghi'||x==='jkl'){//......
  • js高级
    面向对象面向过程的思维方式:就是把解决问题的关注点放到解决问题的每一个详细步骤上;面向对象的思维方式:就是把解决问题的关注点放到解决问题需要的一系列对象身上。面......
  • js 树的各种骚操作,生成树,父子链,树推平
    js生成树结构1、假树,利用共享内存实现,非真遍历,这个是一种比较直观的写法letlist=[{id:1,name:100},{id:11,name:101,pid:1},{id:11......
  • 多维数组扁平化处理的几种方法
    方法一、字符串化+数组化functionflatten(arr){letcount=0;returnarr.toString().split(',').map(function(item){ returnNumber(item)})}fl......