相关疑难解决方法(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万
查看次数

JavaScript是否有像"range()"这样的方法来生成提供的范围内的范围?

在PHP中,你可以做...

range(1, 3); // Array(1, 2, 3)
range("A", "C"); // Array("A", "B", "C")
Run Code Online (Sandbox Code Playgroud)

也就是说,有一个函数可以通过传递上限和下限来获取一系列数字或字符.

是否内置了JavaScript本身的内容?如果没有,我将如何实施它?

javascript arrays

745
推荐指数
40
解决办法
56万
查看次数

是否存在在ES6(ECMAScript 6)中循环x次而没有可变变量的机制?

x在JavaScript中循环时间的典型方法是:

for (var i = 0; i < x; i++)
  doStuff(i);
Run Code Online (Sandbox Code Playgroud)

但我不想使用++运算符或根本没有任何可变变量.那么,在ES6中,有x另一种方式循环时间吗?我喜欢Ruby的机制:

x.times do |i|
  do_stuff(i)
end
Run Code Online (Sandbox Code Playgroud)

在JavaScript/ES6中有类似的东西吗?我可以作弊并制造自己的发电机:

function* times(x) {
  for (var i = 0; i < x; i++)
    yield i;
}

for (var i of times(5)) {
  console.log(i);
}
Run Code Online (Sandbox Code Playgroud)

我当然还在用i++.至少它看不见:),但我希望在ES6中有更好的机制.

javascript generator ecmascript-harmony ecmascript-6

132
推荐指数
11
解决办法
7万
查看次数

迭代范围的功能方式(ES6/7)

以更多功能方式执行以下操作的最佳方法是什么(使用ES6/ES7)

let cols = [];
for (let i =0; i <= 7; i++) {
   cols.push(i * i);
}
return cols;
Run Code Online (Sandbox Code Playgroud)

我试过,

return [ ...7 ].map(i => {
  return i * i;
});
Run Code Online (Sandbox Code Playgroud)

但那转化为

[].concat(7).map(function (n) {
  return n * n;
});
Run Code Online (Sandbox Code Playgroud)

这不是我的预期.

编辑:

@pavlo.的确,这是一个错误.我正在使用JSX,例如,我想要7个div,(未经测试)

let cols = [];
    for (let i =0; i <= 7; i++) {
       cols.push(<div id={i}> ...  </div>)
    }
    return cols;
Run Code Online (Sandbox Code Playgroud)

所以这个想法确实是为了减少临时变量和程序感觉的数量.

javascript functional-programming ecmascript-harmony ecmascript-6

108
推荐指数
3
解决办法
7万
查看次数

ES6 - 生成一个数字数组

用谷歌搜索后,我找到了两个解决方案:

    var data = [...Array(10).keys()];
console.log(data);
    var data1 = Array(8).fill().map((_, i) => i);
console.log(data1);
Run Code Online (Sandbox Code Playgroud)

data1显示[0,1,...,7]但是数据只显示[[object Array Iterator]]我如何实际看到数字.

我需要它来对数字进行一些迭代(Euler项目的一部分).

以前我在Python中做了很多Euler挑战.现在我决定重新访问它并尽可能多地使用JS(尽可能多的ES6语法)来帮助我发展我的js技能.

javascript ecmascript-6

33
推荐指数
6
解决办法
4万
查看次数

是否有一种在JavaScript ES6中初始化数组的功能方法?

我终于放弃并编写了一个for循环来初始化一个简单的对象数组,其中每个对象都有一个递增的counter(id)作为对象的属性.换句话说,我只想要:

var sampleData = [{id: 1},{id: 2},...];
Run Code Online (Sandbox Code Playgroud)

我希望有一个紧凑的语法,我可以把它放在我的返回语句上.

let sampleData = [];
for (var p = 0; p < 25; p++){
    sampleData.push({id: p});
}

return {
    data: sampleData,
    isLoading: true
};
Run Code Online (Sandbox Code Playgroud)

javascript functional-programming ecmascript-6

28
推荐指数
4
解决办法
5229
查看次数

使用reduce将数组转换为对象数组

optimizedRoute = ['Bengaluru', 'Salem', 'Erode', 'Tiruppur', 'Coimbatore']

result = [
  {start: bengaluru, end: salem},
  {start: salem, end: erode},
  {start: erode, end: tiruppur},
  {start: tiruppur, end: coimbatore},
]
Run Code Online (Sandbox Code Playgroud)

我想转换optimizedRoute成结果.我想用ES6做到这一点.reduce().这是我尝试过的:

const r = optimizedRoute.reduce((places, place, i) => {
  const result: any = [];
  places = []
  places.push({
    startPlace: place,
    endPlace: place
  });
  // result.push ({ startplace, endplace, seats: 4 });
  // console.log(result);
  return places;
}, {});
console.log(r)
Run Code Online (Sandbox Code Playgroud)

javascript arrays ecmascript-6

24
推荐指数
4
解决办法
3222
查看次数

如何简要初始化前十个整数的数组?

我正在学习Ruby和JavaScript.偶尔我想要一个前十个整数的数组(或其他一些可预测的系列):

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

在Ruby中,是否有更快(比如内置)的方式来初始化这个数组(0..9).to_a?无论如何,这很快.

但在JavaScript中,我不知道有任何类似的快速构建方法.我可以迭代一个for循环,但我认为必须有一个更快的方法.但它是什么?

javascript ruby arrays

4
推荐指数
1
解决办法
156
查看次数