在PHP中,您可以。。。
range(1, 3); // Array(1, 2, 3)
range("A", "C"); // Array("A", "B", "C")
也就是说,有一个函数可以通过传递上下限来获得一系列数字或字符。
JavaScript本机是否有内置的功能?如果没有,我将如何实施?
在PHP中,您可以。。。
range(1, 3); // Array(1, 2, 3)
range("A", "C"); // Array("A", "B", "C")
也就是说,有一个函数可以通过传递上下限来获得一系列数字或字符。
JavaScript本机是否有内置的功能?如果没有,我将如何实施?
当前回答
您可以使用lodash函数.range(10)https://lodash.com/docs#range
其他回答
我很惊讶地看到了这条线索,并没有看到任何类似我的解决方案(也许我错过了答案),所以就在这里。我在ES6语法中使用了一个简单的范围函数:
// [begin, end[
const range = (b, e) => Array.apply(null, Array(e - b)).map((_, i) => {return i+b;});
但它只在向前计数时有效(即begin<end),因此我们可以在需要时对其进行轻微修改,如下所示:
const range = (b, e) => Array.apply(null, Array(Math.abs(e - b))).map((_, i) => {return b < e ? i+b : b-i;});
我个人最喜欢的:
const range = (start, end) => new Array(end-start+1).fill().map((el, ind) => ind + start);
nope-在2002年仍然没有原生javascript范围,但这个简洁的ES6箭头函数可以像PHP一样提供升序和降序的数字和字符串(包括步骤)。
//@return数字或字符串的升序或降序范围常量范围=(a,b,d=1)=>类型a==“字符串”? range(a.charCodeAt(),b.charCodeAt()).map(v=>String.fromCharCode(v)):isNaN(b)? 范围(0,a-1):b<a? 范围(b,a,d)反向():d>1? 范围(a,b)。过滤器(v=>v%d==0):[a,b].reduce((min,max)=>阵列(max+1-min).填充(min).map((v,i)=>v+i));//用途控制台断言(range(3).toString()=='0,1,2'&&range(2,4).toString()==“2,3,4”&&range(4,2).toString()=='4,3,2'&&范围(5,15,5).toString()=='5,10,15'&&range('A','C').toString()==“A,B,C”&&range('C','A').toString()=='C,B,A');
我会这样编码:
function range(start, end) {
return Array(end-start).join(0).split(0).map(function(val, id) {return id+start});
}
range(-4,2);
// [-4,-3,-2,-1,0,1]
range(3,9);
// [3,4,5,6,7,8]
它的行为类似于Python范围:
>>> range(-4,2)
[-4, -3, -2, -1, 0, 1]
Op要求范围,例如范围(3,10),因此可以
[...[...Array(10-3).keys()].map(i => i+3)]
回报
[3, 4, 5, 6, 7, 8, 9]