javascript - JS 设计的只支持一维数组,出于何种考虑,还支持二维数组的写法?

查看:85
本文介绍了javascript - JS 设计的只支持一维数组,出于何种考虑,还支持二维数组的写法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

JS 设计的只支持一维数组,出于何种考虑,还支持二维数组的写法?

这个特性差点把我虐成狗

最初以为是 Chrome 的bug,但是测试是 IE、FireFox都支持,结果都一直,难道是标准的一部分

var testArr = [];
testArr[0,0] = 0;
console.log(testArr, "    len:", testArr.length, "    0,0:", testArr[0,0]);
//IE9:日志: 0    len:1    0,0:0 
//Chrome:[0] "    len:" 1 "    0,0:" 0
//Firefox:Array [ 0 ]     len: 1     0,0: 0

testArr[0,1] = 1;
console.log(testArr, "    len:", testArr.length, "    0,1:", testArr[0,1]);
//IE9:日志: 0,1    len:2    0,1:1 
//Chrome:[0, 1] "    len:" 2 "    0,1:" 1
//Firefox:Array [ 0, 1 ]     len: 2     0,1: 1

testArr[0,2] = 2;
console.log(testArr, "    len:", testArr.length, "    0,2:", testArr[0,2]);
//IE9:日志: 0,1,2    len:3    0,2:2 
//Chrome:[0, 1, 2] "    len:" 3 "    0,2:" 2
//Firefox:Array [ 0, 1, 2 ]     len: 3     0,2: 2

testArr[1,1] = 11;
console.log(testArr, "    len:", testArr.length, "    0,1:", testArr[0,1] , "    1,1:", testArr[1,1]);
//IE9:日志: 0,11,2    len:3    0,1:11    1,1:11 
//Chrome:[0, 11, 2] "    len:" 3 "    0,1:" 11 "    1,1:" 11
//Firefox:Array [ 0, 11, 2 ]     len: 3     0,1: 11     1,1: 11

//结论:
testArr[100,1] == testArr[1]

//下面代码是搞笑的
var arr = [1,2], val;
//val = arr[1]写成不知道算不算黑科技
val = arr[1,0,0,8,6,"是","中","国","移","动","的","客","服","电","话",1] 

解决方案

你知道逗号运算符吗?

var a = 1, 2;
// a === 1

var a = (1, 2);
// a === 2

var a = (1, 2, 3, 4, 5, 6);
// a === 6;

所以 arr[1,2] 相当于 var i = (1, 2); arr[i],也就是 arr[2]

这篇关于javascript - JS 设计的只支持一维数组,出于何种考虑,还支持二维数组的写法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆