-
使用 对于 循环? – 罗素·迪亚斯 评论 2010年9月20日12:39 -
1 图书馆有必要做这项工作吗? 我不这么认为=) – 用户372551 评论 2010年9月20日12:41 -
一点也不。 这显然是最好在语言级别解决的问题,而不是在库级别。 我相应地修改了这个问题。 – 达格·纳布特 评论 2010年9月20日12:43 -
三 我认为这是一个非常有效的问题,有一些语言可以做到这一点,如果你必须每天/每月/每年创建3个下拉列表,那么3个for循环看起来很混乱,但它似乎也是唯一快速实现的方法 – 罗布 评论 2013年5月23日11:30 -
的可能副本 JavaScript是否有类似“range()”的方法来根据提供的边界生成数组? – 埃文·卡罗尔 评论 2018年3月10日21:37
24个答案
数组(8).fill(1) //=> [1, 1, 1, 1, 1, 1, 1, 1]
数组(8).fill().map((元素,索引)=>索引+5) //=> [5, 6, 7, 8, 9, 10, 11, 12]
数组(8).fill().map((element,index)=>String.fromCharCode('G'.charCodeAt(0)+index)) //=>[“G”,“H”,“I”,“J”,“K”,“L”,“M”,“N”]
Array.apply(0,Array(8)).map(function(){return 1;})
. The
-
-
6 -
7 我喜欢这个。 在一次搜索中找到了它,它正是我想要的。 下面是创建系列的一个小修改: 数组.apply(0,数组(8)).map(函数(_,b){return b+1;})=>[1,2,3,4,5,6,7,8] 要映射的参数是 元素,索引,数组 用于其他有趣的用途。 – 驼背 评论 2015年4月10日1:54
函数makeArray(计数、内容){ var结果=[]; if(内容类型==“函数”){ for(var i=0;i<计数;i++){ result.prush(内容(i)); } }其他{ for(var i=0;i<计数;i++){ 结果推送(内容); } } 返回结果; }
var myArray=makeArray(8,1); //或者更复杂的东西,例如: var myArray=makeArray(8,函数(i){return i*3;});
-
-
嘿,谢谢你。 我想可能会有类似于MatLab中可用的内容,即创建包含特定元素的某个长度的向量。 – 用户338195 评论 2010年9月20日13:02
数组.from({length:8},(el,index)=>1/*或index*/);
范围(开始、结束、步骤)
:使用ES6 Iterator
函数*范围(开始、结束、步长){ 让状态=开始; while(状态<结束){ 屈服状态; 状态+=步骤; } 回报; };
const generate_array=(start,end,step)=>array.from(range(start、end、step));
const array=generate_array(1,10,2);
for(范围常数i(1,Number.MAX_SAFE_INTEGER,7)){ 控制台.log(i) }
函数make_sequence(值,增量) { 如果(!value)值=0; if(!increment)increment=函数(值){返回值+1;}; 返回函数(){ 让电流=值; value=增量(值); 回流; }; } i=制造顺序() i()=>0 i()=>1 i()=>2 j=make_sequence(1,函数(x){return x*2;}) j()=>1 j()=>2 j()=>4 j()=>8
var结果=[]; 对于(var i=1;i!=4;++i)结果push(i)
-
就性能而言,根据我在V8上的基准测试,这个选项与我发布的速度选项差不多。 如果您没有使用ES2022,这就是当前的性能赢家。 请参阅 stackoverflow.com/a/78103119/163170 评论 3月4日17:35
/** *从零开始生成数字序列。 *@param{number}count结果数组中的数字计数。 *@return{Array<number>}从零到(count-1)的数字序列。 */ 公共静态序列(计数:number):数组<number> { return Array.apply(0,Array(count)).map((x,i)=> { 返回i; }); }
函数linSeq(x0,xN){ return linspace(x0,xN,Math.abs(xN-x0)+1); } 函数linspace(x0,xN,n){ dx=(xN-x0)/(n-1); 变量x=[]; 对于(var i=0;i<n;++i){ x.push(x0+i*dx); } 返回x; }
Array.apply(null,Array(3)).map(Function.prototype.call.bind(Number))
var GetAutoNumber=导出。 获取自动编号=(L)=>{ 让LeftPad=(number,targetLength)=>{ 让输出=数字+“”; while(output.length<targetLength){ 输出=“0”+输出; } 返回输出; } 设GivenLength的最大数字=“”; for(设t=0;t<L;t++){ MaxNumberOfGivenLength=最大GivenLeng数+“9” } 让StartTime=+new Date(); 让结果=[]; let ReturnNumber; for(设i=1;i<=MaxNumberOfGivenLength;i++){ 结果推送(LeftPad(i,L)) } for(设k=0;k!=26;k++){ for(设j=0;j<=999;j++){ 结果推送(String.fromCharCode(k+65)+LeftPad(j,(L-1))); } } console.log(结果长度) 返回结果; } 获取自动编号(3)
seq=(n,value)=>数组(n).fill(value)
seq=n=>n<1? []:[…序列(n-1),n]
seq2=(n,开始,inc)=>seq(n).map(i=>start+inc*i)
让选择权=[ '数组(n).fill().map((_,i)=>i)',//2.71 '数组(n).fill().map(函数(_,i){return i})',//2.73 '让o=[]; 对于(设i=0;i<1e5;i++)o[i]=i',//3.29 '让o=[]; 对于(设i=0;i<1e5;i++)o.push(i)',//3.31 '让o=[]; 对于(设i=0,n2=n;i<n2;i++)o[i]=i',//3.38 '让o=[]; 对于(设i=0;i<n;i++)o[i]=i',//3.57 “Array.apply(null,Array(n)).map(Function.prototype.call.bind(Number))”,//3.64 '数组.apply(0,数组(n)).map((_,i)=>i)',//3.73 '数组.apply(null,数组(n)).map((_,i)=>i)',//3.77 ‘o2=[]; 对于(设i=0;i<n;i++)o2[i]=i',//4.42 '[…数组(n).keys]',//7.07 '数组.from({length:n},(_,i)=>i)',//7.13 '来自数组(数组(n),(_,i)=>i)',//7.23 'o3=[]; 对于(i3=0;i3<n;i3++)o3[i3]=i3'//24.34 ] 设n=1e5 opt.sort(()=>Math.random()-.5) for(让opt的opt){ 让t1=process.hrtime.bigint() 评估(可选) 让t2=进程.hrtime.bigint() 控制台.log(t2-t1+'\t'+选项) }
函数*generate(){ 设索引=0; while(真){ 索引++; 从CharCode生成String.from(64+索引)// 这将从A返回,对于number只返回索引 } } const gen=生成(); console.log(gen.next().value);// 一 console.log(gen.next().value);// B类 console.log(gen.next().value);// C类
数组(…新范围(0,n));
类别范围{ 第一; 最后; 构造函数(第一个,最后一个){ this.first=第一个; this.last=最后; } [Symbol.iterator](){return this;} next(){ return(this.first<this.last)返回 ? {value:this.first++,done:false} :{value:未定义,已完成:true}; } }
函数seq(len,value) { //创建数组 //使用我们想要的值进行连接 //把它分开 return(new Array(len+1)).join(value).split(“”); } seq(10,“a”); [“a”,“a” 序列号(5,1); ["1", "1", "1", "1", "1"]
-
1 -
-
1 @亚历山大迪亚斯你说得对。 jsperf.com/generate-sequence-of-numbers-chars-in-javascript 评论 2020年8月5日14:00
函数intSequence(开始,结束,n=开始,arr=[]){ 返回n===结束? arr.concat(n) :intSequence(开始,结束,开始<结束?n+1:n-1,arr.concat(n)); } $>intSequence(1,1) <-数组[1] $>intSequence(1,3) <-数组(3)[1,2,3] $>intSequence(3,-3) <-数组(7)[3,2,1,0,-1,-2,-3]