[js] xD-Arrays
# (...参数)可以直接将参数转换成数组形式
function arrCreate(a, b) { var arr = []; for (var i = 0; i < a; i++) { if (typeof b == "function") arr[i] = b(); else arr[i] = b; } //console.log(arr ); return arr; } var arrFinal = []; function dim(...args) { console.info(args ); var arr = new Array(args[0]); if (args.length != 2) { for (var i = 0; i < args[0]; i++) { //console.log(args); arr[i] = dim.apply(null, args.slice(1)); } } else { return arrCreate(args[0], args[1]); } console.log(arr ); return arr; }
#
function dim() { var arr = [].slice.call(arguments); var l = arr.length; var value = arr[l-1]; //console.log(value); for (var i = l - 1; i > 0; i--) { var temp = []; for (var j = 0; j < arr[i-1]; j++) { if (typeof arr[i] == 'function') { value = arr[i](); console.warn(value); } //console.warn(value); temp.push(value); } value = temp; } console.info(value); return value; } dim(3, 3, "x") // => [['x','x','x'],['x','x','x'],['x','x','x']] dim(2, 2, 2, 0) // => [[[0,0],[0,0]],[[0,0],[0,0]]] dim(3, true) // => [true,true,true] var xxx = function() { return "xX" } dim(2, 5, xxx) // => [['xX','xX','xX','xX','xX'],['xX','xX','xX','xX','xX']] // // if function provides different value on each iteration // // then produced subarrays must should be different! var rnd = function() { return ~~(Math.random() * 3) } dim(3, 2, rnd) // => (depends on results of rnd) // eg: [[0,1],[2,1],[0,0]]
浙公网安备 33010602011771号