この単純な配列を動的に作成する最も効率的な方法は何ですか?
var arr = [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
変数から数値 10 を取得できるとしましょう
var mynumber = 10;
この単純な配列を動的に作成する最も効率的な方法は何ですか?
var arr = [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
変数から数値 10 を取得できるとしましょう
var mynumber = 10;
var arr = [];
for(var i=1; i<=mynumber; i++) {
arr.push(i.toString());
}
更新:このようなマイクロ最適化は価値がありません。最近のエンジンは非常にスマートであるため、2020 年には
var arr = [];
.
これが私がそれを行う方法です:
var mynumber = 10;
var arr = new Array(mynumber);
for (var i = 0; i < mynumber; i++) {
arr[i] = (i + 1).toString();
}
私の答えは皆とほぼ同じですが、私が何か違うことをしたことに注意してください。
だから私は配列を作成しましたnew Array(mynumber);
整数値の文字列バージョンを含む配列を作成したいだけのように聞こえます。簡単なアプローチ:
var arr = [];
for (var i = 1; i <= mynumber; i++) arr.push(""+i);
より興味深いバージョンについては、ジェネレーターを実行できます...
function tail(i, maxval) {
return [i].concat(i < maxval ? tail(i+1, maxval) : []);
}
var arr = tail(1, mynumber);
var arr = [];
while(mynumber--) {
arr[mynumber] = String(mynumber+1);
}
私は次のようにします。
var num = 10,
dynar = [...Array(num)].map((_,i) => ++i+"");
console.log(dynar);
var arr = [];
for(var i=1; i<=mynumber; i++) {
arr.push("" + i);
}
JSPerfによると、これは Chrome の方が速いようですが、すべてブラウザに大きく依存することに注意してください。
このスニペットについて変更できる点は 4 つあります。
for
またはを使用しwhile
ます。push
または直接アクセス。toString
。すべてのブラウザの合計速度は、このリストの各項目の各オプションがその特定のブラウザでどれだけ優れているかを組み合わせたものになります。
TL;DR: この特定の部分をマイクロ最適化しようとするのは、おそらく良い考えではありません。
質問を読み間違えました、修正しました。試す:
var myNumber = 100,
myarr = (function arr(i){return i ? arr(i-1).concat(i) : [i]}(myNumber));
楽しみのために、次のように拡張するArray
と:
Array.prototype.mapx = function(callback){
return String(this).split(',').map(callback);
}
あなたが使用することができます:
var myNum = 100,
myarr = new Array(myNum).mapx(function(el,i){return i+1;});
range
組み込みの Pythonic のような関数があるかどうかを尋ねている場合は、ありません。あなたはそれをブルートフォースの方法で行う必要があります。多分rangyはあなたに興味があるでしょう。
私たちの何人かは、パフォーマンスが良くない使用方法について言及しています。
function getArrayViaFrom(input) {
console.time('Execution Time');
let output = Array.from(Array(input), (value, i) => (i + 1).toString())
console.timeEnd('Execution Time');
return output;
}
function getArrayViaFor(input) {
console.time('Execution Time 1');
var output = [];
for (var i = 1; i <= input; i++) {
output.push(i.toString());
}
console.timeEnd('Execution Time 1');
return output;
}
console.log(getArrayViaFrom(10)) // Takes 10x more than for that is 0.220ms
console.log(getArrayViaFor(10)) // Takes 10x less than From that is 0.020ms
動的に入力するすべての配列に対して行うのと同じ方法です。for ループ。スェードコードは
arr =array()
for(i; i<max; i++){
arr[]=i
}
それは途中であなたを助けるはずです