
懂字典或map的概念吗:
你需要的应该 是这样的数据结构:
var menu = {"submenu1":[
{"name":"item1","id":"1","link":"
},
{"name":"item2","id":"2","link":"
}
],
"submenu2":[
{"name":"item1","id":"1","link":"
},
{"name":"item2","id":"2","link":"
}
],
}
//定义菜单方法
var menu = {};
//动态添加子菜单:
menu["submenu3"] = [];
//删除某个子菜单项
menu["submenu3"] = undefined;
//往子菜单中添加条目
menu["submenu3"]push({"name":"item1","id":"1","link":"
});
//删除一个条目
menu["submenu3"]splice(1,1);
//修改条目
menu["submenu3"][0]["link"] = "
//查询条目属性
var itemName = menu["submenu3"][0]["name"];
//遍列整个菜单
for(var key in menu) {
consolelog("key="+key);
var items = menu[key];
for(var i=0;i<itemslength;i++) {
//后面的写法没错,体现的是js的灵活性
consolelog("items["+i+"]name="+items[i]["name"]);
consolelog("items["+i+"]link="+items[i]link);
}
}php数组根据某一个键值,把相同键值的合并生成一个新的二维数组
源数据:
$infos = array( array( 'a' => 36, 'b' => 'xa', 'c' => '2015-08-28 00:00:00', 'd' => '2015/08/438488a00b3219929282e3652061c2e3png'
), array( 'a' => 3, 'b' => 'vd', 'c' => '2015-08-20 00:00:00', 'd' => '2015/08/438488a00b3219929282e3652061c2e3png'
), array( 'a' => 6, 'b' => 'wwe', 'c' => '2015-08-28 00:00:00', 'd' => '2015/08/438488a00b3219929282e3652061c2e3png'
), array( 'a' => 36, 'b' => 'se', 'c' => '2015-08-28 00:00:00', 'd' => '2015/08/438488a00b3219929282e3652061c2e3png'
), array( 'a' => 6, 'b' => 'aw', 'c' => '2015-08-28 00:00:00', 'd' => '2015/08/438488a00b3219929282e3652061c2e3png'
), array( 'a' => 36, 'b' => 'bv', 'c' => '2015-08-28 00:00:00', 'd' => '2015/08/438488a00b3219929282e3652061c2e3png'
), array( 'a' => 12, 'b' => 'xx', 'c' => '2015-08-27 00:00:00', 'd' => '2015/08/438488a00b3219929282e3652061c2e3png'
)
);1234567891011121314151617181920212223242526272829303132333435363738394041424344
处理要求:将数组中a相同的二维数组合并到一个数组中,生成一个新的数组
代码:
<php
$result= array(); foreach ($infos as $key => $info) { $result[$info['a']][] = $info;
}
print_r($result);123456
输出:
Array(
[36] => Array
(
[0] => Array
(
[a] => 36
[b] => xa
[c] => 2015-08-28 00:00:00
[d] => 2015/08/438488a00b3219929282e3652061c2e3png
)
[1] => Array
(
[a] => 36
[b] => se
[c] => 2015-08-28 00:00:00
[d] => 2015/08/438488a00b3219929282e3652061c2e3png
)
[2] => Array
(
[a] => 36
[b] => bv
[c] => 2015-08-28 00:00:00
[d] => 2015/08/438488a00b3219929282e3652061c2e3png
)
)
[3] => Array
(
[0] => Array
(
[a] => 3
[b] => vd
[c] => 2015-08-20 00:00:00
[d] => 2015/08/438488a00b3219929282e3652061c2e3png
)
)
[6] => Array
(
[0] => Array
(
[a] => 6
[b] => wwe
[c] => 2015-08-28 00:00:00
[d] => 2015/08/438488a00b3219929282e3652061c2e3png
)
[1] => Array
(
[a] => 6
[b] => aw
[c] => 2015-08-28 00:00:00
[d] => 2015/08/438488a00b3219929282e3652061c2e3png
)
)
[12] => Array
(
[0] => Array
(
[a] => 12
[b] => xx
[c] => 2015-08-27 00:00:00
[d] => 2015/08/438488a00b3219929282e3652061c2e3png
)
)
)var sc=new Array();就这样sc[0] = "素材\阶段4\content1jpg";
sc[1] = "素材\阶段4\content2jpg";
sc[2] = "素材\阶段4\footjpg";你写的对用prototypejs提供新功能:
eg: 数组新增方法:
var a = new Array[1,2,3];
aeach(function(v){ //遍历数组,然后依次取值并执行相应的 *** 作
alert(v);
});
${ResultManagedshowResult}each(function(res){
newRowinsertCell()innerHTML = res ;
});
你这里在JS中使用了"${}"我真的不敢保证你能取到相应的值
乍看之下,似乎不太明白何为“数组的键”。
js数组
var arr = [];//一个空数组最简单的申明方式遍历其元素的方式
for(var i = 0,len = arrlength;i<len;i++){
var curEle = arr[i];//获取当前索引位置的元素
}
//2
for(var index in arr){
var curEle = arr[index];//index为遍历的索引
}
如果你想遍历一个对象/json
var obj = {name:'zhangsan',age:23,addr:'China'};var objkeys = [];
for(objkeys[objkeyslength] in obj);
//以上将obj的键名存放到了数组objkeys 中。
//遍历输出键值对
for(var key in obj){
consolelog(key,obj);
}多维数组不是用行和列可以形容的;
你可以这样理解:
var arr=[1,2,3,4,5];
这是一个标准、简单、易读的JS数组,那么,这个数组里,每个子数据的数据类型都是数字,这样能够理解吧。
那么,数组里面的每个值不但可以存数字,还可以存储几乎任何类型的数据,包括字符串、布尔值以及对象等等;
那么,值里面当然也可以是数组:
var arr = [[1,2],2,3,4,5];
这行代码里,数组arr的第一个值,就是一个数组了,而这个作为arr第一个值的数组是[1,2]
同理,这样一来,这个数组我们称之为二维数组,当然以此类推,还有三维、四维以及n维
那么,我们如果想得到一个数组里面第n给的那个值,必须要依靠它的键值,就是取值的时候所用的方括号:
arr[1]
这表示arr这个数组的第一个值;
同理,如果我们想要取arr数组里第一个值(也是个数组)里的第一个值,就要这样:
arr[1][1]
这里,第一个方括号表示第一维,第二个表示第二维,以此类推
而你的例程中的for语句,就是在遍历数组,意思是将所有的数组中的值,都列出来。
然而,你的例程却有个巨大的缺陷,或者说错误都不为过,不知道你是从哪里看到的这种写法,这种写法中,是先遍历二维,再遍历一维,就像你的
var arr=[[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3],[4,4,4,4,4],[5,5,5,5,5]];
每一维里的每个值都是均等长度,这样不会出错,可一但不相等,问题就严重了;
这里需要你仔细思考,不详细解释了。
那么,应该如何解决?
就是需要先从最低的维度开始遍历:
var arr=[[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3],[4,4,4,4,4],[5,5,5,5,5]];
for (first=0; first<arrlength; first++) {//这里是遍历第一维,也就是分别得到[1,1,1,1,1],以及[2,2,2,2,2]
for (second=0; second<arr[first]length; second++){//这里遍历第二维,也就是第first维中的第second个值
documentwrite(arr[first][second]);//写数据
}
}
这样一来,你再理解一下,不管你的数组里,每个数组有多少个值,都不会出问题了呢
嗯,我讲的也只是起到抛砖引玉的作用,无法讲得太仔细,另外说一下,你这套是二维数组,如果是三维,你就需要三层的for遍历,以此类推。
理论上,数组可以有无限维,每一维里的值的数量,也可以无限个,两个同为一维的数组,长度完全可以不同,完全可以不用这么规则:
var arr=[[1,1,1,1,1],[2,2],[3,3,3,3,3,3,3,3],[4,4,4,4],[5,5,5]];
甚至可以混合类型:
var arr=[[1,1,1,1,1], ‘string’, 200, [4,4,4,4,4], function(){}];
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)