生成空二维数组的最佳方法 [英] best way to generate empty 2D array

查看:31
本文介绍了生成空二维数组的最佳方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有更短、更好的方法来生成n"个长度的二维数组?

is there a shorter, better way to generate 'n' length 2D array?

var a = (function(){ var i=9, arr=[]; while(i--) arr.push([]); return arr })();

a // [ [],[],[],[],[],[],[],[],[] ]

** 老式的短路**:

** old-school short-way**:

var a = (function(a){ while(a.push([]) < 9); return a})([]);

更新 - 使用 ES2015

Array(5).fill().map(a=>[]); // will create 5 Arrays in an Array
// or
Array.from({length:5}, a=>[])

清空二维数组(节省内存)

function make2dArray(len){
    var a = [];
    while(a.push([]) < len); 
    return a;
}

function empty2dArray(arr){
    for( var i = arr.length; i--; )
      arr[i].length = 0;
}

// lets make a 2D array of 3 items
var a = make2dArray(3);

// lets populate it a bit
a[2].push('demo');
console.log(a); // [[],[],["demo"]]

// clear the array
empty2dArray(a);
console.log(a); // [[],[],[]]

推荐答案

另一种方式:

for(var a = [];a.length < 10; a.push([])); // semicolon is mandatory here

另一种方式:

var a = []; while(a.push([]) < 10);

这是因为 .push()[docs](规范) 返回数组的新长度.

This works because .push() [docs] (specification) returns the new length of the array.

也就是说,这是减少代码"的错误方式.创建一个具有有意义名称的专用函数并使用这个函数.您的代码将更易于理解:

That said, this is the wrong way of "reducing code". Create a dedicated function with a meaningful name and use this one. Your code will be much more understandable:

function get2DArray(size) {
    size = size > 0 ? size : 0;
    var arr = [];

    while(size--) {
        arr.push([]);
    }

    return arr;
}

var a = get2DArray(9);

代码的阅读频率远高于编写代码.

Code is read much more often than written.

这篇关于生成空二维数组的最佳方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆