最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript趣题:数组初始化

来源:动视网 责编:小采 时间:2020-11-27 20:26:05
文档

JavaScript趣题:数组初始化

JavaScript趣题:数组初始化:有时候,我们需要创建一个的数组,并将它初始化为我们想要的默认值。通常情况下,我们会先创建一个一维数组,接着在这个一维数组内引用二维数组......直到N维数组,然后把它的内容填充为默认值。这个过程,我们需要写很多循环,难免有些繁琐,那么,何不
推荐度:
导读JavaScript趣题:数组初始化:有时候,我们需要创建一个的数组,并将它初始化为我们想要的默认值。通常情况下,我们会先创建一个一维数组,接着在这个一维数组内引用二维数组......直到N维数组,然后把它的内容填充为默认值。这个过程,我们需要写很多循环,难免有些繁琐,那么,何不


有时候,我们需要创建一个的数组,并将它初始化为我们想要的默认值。

通常情况下,我们会先创建一个一维数组,接着在这个一维数组内引用二维数组......直到N维数组,然后把它的内容填充为默认值。

这个过程,我们需要写很多循环,难免有些繁琐,那么,何不想办法写个数组初始化的工具方法,方便我们来调用呢?

我猜你一定想要个这样的方法:

dim( d1 [,d2 [,d3 [... ]]], value )

来看它的参数列表,d1,d2,d3代表各个维度数组所引用的元素个数,value代表初始值。

这个value可能是函数,如果是这种情况,我们就引用函数的返回值。

来看看几个例子:

dim( 3,3,"x" ) // => [['x','x','x'],['x','x','x'],['x','x','x']]

这里一位数组引用了3个二维数组,每个二维数组引用了3个初始化值’x’

dim( 2,2,2,0 ) // => [[[0,0],[0,0]],[[0,0],[0,0]]]

这里规则同上

dim( 3, true ) // => [true,true,true]

这里一维数组引用了3个boolean值true

var xxx = function(){ return "xX" }
dim( 2,5,xxx ) // => [['xX','xX','xX','xX','xX'],['xX','xX','xX','xX','xX']]

这里初始化值是一个函数,所以我们填充它返回的结果

这个题目因为涉及到N维的数组,所以需要使用递归。

它是一个边构建数组,边深度遍历的过程。

在我的方法中,使用了一个参数deep记录当前的深度。

比如dim( 2,2,2,0 ),如果当前deep为0,那么就对应第一个参数2,说明要创建2个数组,也就是说,deep的值和参数列表的索引是一致的,代表要构建多少个数组或值。

如果deep达到了最深,说明可以进行初始化赋值了,for循环填充当前的数组。

function dim(){ 
 var len = arguments.length; 
 var args = Array.prototype.slice.call(arguments,0,len-1); 
 var content = arguments[len-1]; 
 var result = []; 
 
 var traverse = function foo(from,deep){ 
 var arg = args[deep]; 
 if(deep < args.length - 1){ 
 for(var i=0;i<arg;i++){ 
 var array = []; 
 from.push(array); 
 foo(array,deep+1); 
 } 
 } 
 else{ 
 for(var i=0;i<arg;i++){ 
 if(typeof content === "function"){ 
 from.push(content()); 
 } 
 else{ 
 from.push(content); 
 } 
 } 
 } 
 }; 
 traverse(result,0); 
 return result; 
}

文档

JavaScript趣题:数组初始化

JavaScript趣题:数组初始化:有时候,我们需要创建一个的数组,并将它初始化为我们想要的默认值。通常情况下,我们会先创建一个一维数组,接着在这个一维数组内引用二维数组......直到N维数组,然后把它的内容填充为默认值。这个过程,我们需要写很多循环,难免有些繁琐,那么,何不
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top