我正在寻找下面的任何替代方法来创建一个包含1到N的JavaScript数组,其中N仅在运行时已知.
var foo = [];
for (var i = 1; i <= N; i++) {
foo.push(i);
}
Run Code Online (Sandbox Code Playgroud)
对我而言,感觉应该有一种没有循环的方法.
在PHP中,你可以做...
range(1, 3); // Array(1, 2, 3)
range("A", "C"); // Array("A", "B", "C")
Run Code Online (Sandbox Code Playgroud)
也就是说,有一个函数可以通过传递上限和下限来获取一系列数字或字符.
是否内置了JavaScript本身的内容?如果没有,我将如何实施它?
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中有更好的机制.
以更多功能方式执行以下操作的最佳方法是什么(使用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
用谷歌搜索后,我找到了两个解决方案:
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技能.
我终于放弃并编写了一个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) 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) 我正在学习Ruby和JavaScript.偶尔我想要一个前十个整数的数组(或其他一些可预测的系列):
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
在Ruby中,是否有更快(比如内置)的方式来初始化这个数组(0..9).to_a?无论如何,这很快.
但在JavaScript中,我不知道有任何类似的快速构建方法.我可以迭代一个for循环,但我认为必须有一个更快的方法.但它是什么?