Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使JSLint满意的同时创建n大小的数组?_Javascript_Arrays_Jslint - Fatal编程技术网

Javascript 在使JSLint满意的同时创建n大小的数组?

Javascript 在使JSLint满意的同时创建n大小的数组?,javascript,arrays,jslint,Javascript,Arrays,Jslint,JSlint不喜欢使用数组构造函数,并且没有允许使用它们的JSlint选项。因此,要创建长度为n的数组,不允许执行以下操作: var arr = new Array(n); 下面这条路是我唯一能绕过的路吗 var arr = []; arr.length = 5; 在正常情况下,这没什么大不了的(使用两行代码而不是一行代码),但我很遗憾不能使用简明字符串乘法器: function repeat(str, times) { return new Array(times + 1).joi

JSlint不喜欢使用数组构造函数,并且没有允许使用它们的JSlint选项。因此,要创建长度为n的数组,不允许执行以下操作:

var arr = new Array(n);
下面这条路是我唯一能绕过的路吗

var arr = [];
arr.length = 5;
在正常情况下,这没什么大不了的(使用两行代码而不是一行代码),但我很遗憾不能使用简明字符串乘法器:

function repeat(str, times) {
    return new Array(times + 1).join(str);
}

JSLint很容易被智商击败

您可以这样做:

function repeat(str, times) {
    var A = Array;
    return new A(times + 1).join(str);
}
这也将有助于:

function repeat(str, times) {
    return new Array.prototype.constructor(times + 1).join(str);
}

可能重复为什么需要创建n大小的阵列?鉴于您已经将字符串乘法器函数描述为使用“hack”,我很惊讶您会在意jslint对
new Array()
的说法。。。但是,如果这是您需要
新数组()的唯一原因,您可以使用for循环或
.length=
来轻松实现
repeat()
函数。
“我很遗憾无法使用…”您是否受到某种约束,需要使用JSLint?@Michael No,它不是重复的。@nnnnnn这是关于当一个聪明的单行程序可用时必须使用3行代码。。。你读过我问题中的用例了吗?太好了!这就是我要找的:)没问题。需要注意的有趣的事情是,为了解决linter问题,实际上您已经生成了更为笨拙的代码,因此linter所做的与预期相反。如果你遇到很多这样的问题,你可能会考虑看看(或者让项目牵头看看)其他的短裤。我真的不介意尴尬。我真的很想看看是否有让JSLint忽略该漏洞的漏洞。这个漏洞很容易解决,但请等到您尝试在循环条件下执行赋值时。。。我发现JSLint的限制是不必要的。您永远无法做到这一点:
var node=document.body.firstChild;do{console.log(node);}while(node=node.nextSibling)