相关疑难解决方法(0)

创建一个包含1 ... N的JavaScript数组

我正在寻找下面的任何替代方法来创建一个包含1到N的JavaScript数组,其中N仅在运行时已知.

var foo = [];

for (var i = 1; i <= N; i++) {
   foo.push(i);
}
Run Code Online (Sandbox Code Playgroud)

对我而言,感觉应该有一种没有循环的方法.

javascript arrays

985
推荐指数
54
解决办法
72万
查看次数

重复字符N次

在Perl中,我可以使用以下语法多次重复一个字符:

$a = "a" x 10; // results in "aaaaaaaaaa"
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来实现这个Javascript?我显然可以使用一个函数,但我想知道是否有任何内置方法,或其他一些聪明的技术.

javascript string character repeat

573
推荐指数
13
解决办法
22万
查看次数

数组和对象中的尾随逗号是规范的一部分吗?

JavaScript中的尾随逗号是标准的,还是像Chrome和Firefox这样的大多数浏览器只是容忍它们?

我认为它们是标准的,但IE8遇到一个当然IE浏览器不支持的东西几乎不意味着它不标准.

这是我的意思的一个例子(在书籍数组的最后一个元素之后):

var viewModel = {
    books: ko.observableArray([
        { title: "..", display: function() { return ".."; } },
        { title: "..", display: function() { return ".."; } },
        { title: "..", display: function() { return ".."; } }, // <--right there
    ]),
    currentTemplate: ko.observable("bookTemplate1"),
    displayTemplate: function() { return viewModel.currentTemplate(); }
};
Run Code Online (Sandbox Code Playgroud)

javascript

207
推荐指数
3
解决办法
6万
查看次数

用JavaScript创建范围 - 奇怪的语法

我在es-discuss邮件列表中遇到了以下代码:

Array.apply(null, { length: 5 }).map(Number.call, Number);
Run Code Online (Sandbox Code Playgroud)

这产生了

[0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

为什么这是代码的结果?这里发生了什么事?

javascript ecmascript-5

127
推荐指数
3
解决办法
1万
查看次数

javascript创建给定大小的空数组

在javascript中如何创建给定大小的空数组

Psuedo代码:

X = 3;
createarray(myarray, X, "");
Run Code Online (Sandbox Code Playgroud)

输出:

   myarray = ["","",""]
Run Code Online (Sandbox Code Playgroud)

javascript

59
推荐指数
7
解决办法
8万
查看次数

Javascript TypedArray性能

为什么TypedArrays不像通常的数组那么快?我想为CLZ使用precalc值(计算前导零函数).而且我不希望他们像往常一样解释对象?

http://jsperf.com/array-access-speed-2/2

准备代码:

 Benchmark.prototype.setup = function() {
   var buffer = new ArrayBuffer(0x10000);
   var Uint32 = new Uint32Array(buffer);
   var arr = [];
   for(var i = 0; i < 0x10000; ++i) {
     Uint32[i] = (Math.random() * 0x100000000) | 0;
     arr[i] = Uint32[i];
   }
   var sum = 0;
 };
Run Code Online (Sandbox Code Playgroud)

测试1:

sum = arr[(Math.random() * 0x10000) | 0];
Run Code Online (Sandbox Code Playgroud)

测试2:

sum = Uint32[(Math.random() * 0x10000) | 0];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

PS可能是我的性能测试无效随时纠正我.

javascript performance typed-arrays

20
推荐指数
2
解决办法
1万
查看次数

给定数字而不是数组的函数循环

假设我手上有一个数字 18,而不是一个数组。

给定数字 X 而不是 X 元素数组,在 JS 中创建功能循环的最佳方法是什么?

我可以做这个:

[1,2,3].forEach(function(){

));
Run Code Online (Sandbox Code Playgroud)

但如果我有数字 3

我可以

for(var i = 0; i < 3; i++){

}
Run Code Online (Sandbox Code Playgroud)

但我希望该循环能够正常工作

javascript node.js

14
推荐指数
2
解决办法
5万
查看次数

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

JSlint不喜欢使用Array构造函数,并且没有允许它们的JSLint选项.因此,要创建长度为n的数组,不允许以下内容:

var arr = new Array(n);
Run Code Online (Sandbox Code Playgroud)

以下是我能解决这个问题的唯一方法吗?

var arr = [];
arr.length = 5;
Run Code Online (Sandbox Code Playgroud)

在正常情况下,这不是什么大问题(使用两行代码而不是一行代码),但我很遗憾无法使用简洁的字符串乘法器hack:

function repeat(str, times) {
    return new Array(times + 1).join(str);
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays jslint

7
推荐指数
1
解决办法
482
查看次数

在javascript中声明具有特定长度的数组会带来什么好处?

在大多数javascript应用程序中,我通常会声明一个类似的数组

var x = [];
Run Code Online (Sandbox Code Playgroud)

但我在MDN上看到了大量的示例代码,而不是采用这种方法

var x = new Array(10);
Run Code Online (Sandbox Code Playgroud)

使用V8 /其他现代JS引擎,您是否看到了这种或那种方式的真正好处?

javascript

6
推荐指数
1
解决办法
196
查看次数

Array.apply(null,Array(9))vs new Array(9)

我正在尝试创建一个零数组,我可以使用以下方法获得所需的结果:

Array.apply(null, Array(9)).map(Number.prototype.valueOf, 0)
Run Code Online (Sandbox Code Playgroud)

但是如果我使用的话,我就错了:

new Array(9).map(Number.prototype.valueOf, 0)
Run Code Online (Sandbox Code Playgroud)

就此而言,任何映射结果的尝试都无法在映射上new Array(len)返回预期的数组.有人能帮助我理解为什么会这样吗?

javascript

6
推荐指数
0
解决办法
702
查看次数