JavaScript中如何定义多维数组?

JavaScript014

JavaScript中如何定义多维数组?,第1张

其实Javascript是不支持多维数组的,在Javascript里面,如果用 var a = new Array(10,3) 将报错,数组里面可以包含对象,所以可以把数组里面的某个元素再声明为数组,例如

var a = new Array()

a[0] = new Array()

a[0][0] = 1

alert(a[0][0])  //弹出 1

声明的时候赋值

var a = new Array([1,2,3], [4,5,6],    [7,8,9])

var b = [[1,2,3], [4,5,6], [7,8,9]]

效果一样,a采用常规实例化,b是隐性声明,结果都是生成一个多维数组

//实现一个 Array each方法 实现遍历多维数组

var arr = [1,2,3,[4,[5,6]]]//arr.length

Array.prototype.each = function(fn){

try{

//1 目的  遍历数组的每一项  //计数器 记录当前遍历的元素位置

this.i || (this.i=0)

//2 严谨的判断什么时候去走each核心方法

//当数组的长度大于 0 的时候 &&传递的参数 必须为函数

if( this.length>0  &&fn.constructor == Function ){

// 循环遍历数组的每一项 

while( this.i <this.length ){

//获取数组的每一个值

var e = this[this.i]//数组的每一项

//如果当前元素获取到了 并且当前元素是一个数组

if(e &&e.constructor == Array ){

//直接递归操作

e.each(fn)

}else{

//如果不是数组 (那就是一个单个元素)

//var obj = true

//fn.apply(obj,[e])

//这的目的就是为了把数组的当前元素 传递给fn函数,并且让函数执行

fn.call(e,e)

}

this.i++

}

this.i == null //释放内存 垃圾回收机制回收变量

}

}catch(err){

//do something

}

return this

}

arr.each(function(item){

console.log(item)

})

var html=''

for (var i = 0i <arr.lengthi++) {

var list=arr[i]

html+='<ul>'

html+='<li> name:'+list.name+'</li>'

html+='<li> sex:'+list.sex+'</li>'

html+='</ul>'

}

document.getElementsByTagName('body')[0].innerHTML=html

这样的数据结构用法不算难,只是一维数组,不用两次遍历,再用对象的属性时没必要再遍历了,直接取其中的属性就Ok了

代码运行一遍相信你能看懂的