在代码之美中提到了这个问题,经常遇到嵌套数组的情况即多维数组情况,有时并关心嵌套结构,而只关心里面的数据处理,那么一般的自己写对应的for循环来拆除对应的嵌套数组,如果同书中所说编写通用的 Iterator 迭代器,则可不必对不同的嵌套循环编写不同的for循环,只需同的操作即可,还可方便的处理维slice情况,对每一维都可控制到底要处理哪些数据:
例子:
处理二维数组:
1 2 3 4
5 6 7 8
9 x y z
中的
2 3
6 7
数据
手工for循环处理
for(var i=0;i<2;i++){
for(var j=1;j<3;j++) {
//TODO : process(xx);
}
}
采用迭代器
var matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 'x', 'y', 'z']
];
var dimRange = [
//第一维 0-1循环
{
start: 0,
end: 1
},
//第二维 1-2 循环
{
start: 1,
end: 2
}
];
var iter = new matrixIter(dimRange, matrix);
var item;
var re = [];
while (item = iter.next()) {
//TODO: process(xx)
}
可见采用迭代器后,代码更加简洁,以及更好掉头,只需更改 dimRange 配置,省去了大段修改 for 的麻烦,赞
本文介绍了一种使用迭代器处理多维数组的方法,通过配置维度范围,可以灵活地选择处理数组中的特定部分,使代码更简洁且易于维护。
437

被折叠的 条评论
为什么被折叠?



