JS初始化一个二维数组
初始化一个二维数组
定义二维数组可以通过定义数组的数组实现
var arr = new Array(n);
for(var i = 0;i < n;i++){
arr[i] = new Array(m);
}
但是这种方法我在使用中会报错:cannot read property ‘0’ of undefined,即使在循环中将每一个值都初始化,仍然在m和n不相等时会出现上述错误(有时大于时错误,有时小于时错误,但一定会出错),推测是定义时没将数组中所有的值初始化完成,导致取到的位置没有数据(并不是undefined)。
所以改为使用这种方法:
const arr = new Array(m).fill().map(() => new Array(n).fill());
定义数组,并将所有值都初始化为0(fill()中没有值则为默认值0)
fill()用法:
fill(value)
fill(value,start)
fill(value,start,end)
其他内容随笔
JS中的0 1与true false
if(1 == true) //结果是true
if(1 === true) //结果是false
if(a = true){} //赋值语句和后面的内容都能执行
JS中布尔型仅有true和false,与数值不同,true false与0 1不相等
但JS热衷于在不同数据类型之间进行转换,所以即使数字不是布尔型,仍可以使用如:if(1){} 与 if(true){}。同时也要提到与=的区别,前者比较时会先进行强制类型转换再比较,而后者不进行类型转换直接比较。同理于两个不等。所以==只比较值是否相等,===不止要求值相等,数据类型也要相同。
JS中求一个数的十位
由于js统一使用的双精度浮点数,求一个数的十位时不能直接除,如1/10 结果是0.1,因为不是其他语言定义的int型 但是可以使用parseInt进行转换,如parseInt(1/10) 结果是0。