判断是否为数组
在js里,用 typeof 判断 Array 数组其实返回的是 Object对象。所以不能直接用 typeof 来检测一个变量存的地址是否为数组。可用 instanceof 或者 Array.isArray() 来判断
let listmy = new Array(); //Array.isArray() 检测是否为数组,若是,返回 true 否 返回false console.log(Array.isArray(listmy)); //instanceof 运算符 可以检测是否为数组 console.log(arr1 instanceof Array);
某些操作会改变原数组
萌新初次接触 var 数组A=数组B 的时候,都会认为它是将数组B的内容赋值给了数组A。但是实际并不是这样。
我们需要了解数据存储中 栈 与 堆 的存在,我们常见的简单数据类型的值有:string、number、boolean、undefined、null。它们是将值存在 栈 中,所以也叫值类型,若是 var 字符串A=字符串B 它确实是将变量字符串B的值赋值给了字符串A的变量。
而复杂类型的值如: Object(对象)、Array(数组)等,是通过 栈 中引入地址,存放在 堆 中。
当 var 数组A=数组B ,仅只是将 数组A 该变量标识符下 栈 的地址 复制给了 数组B。当调用的数组B中的数据改变后,数组A也将会发生改变 (类似Pr的嵌套)
正确赋值的方法为:var 数组A = […数组B]
let arr1 = [1, 4, 2, 5, 3]; //将arr1对应的值的内存地址绑定到arr2变量 let arr2 = arr1; //当arr2改变数组内容时,arr1也随之改变 let temp = arr2.sort((a, b) => b - a); console.log(temp);