2017-08-12 8 views
1

に繰り返してarray.map使用して:私は私は、次のしているこんにちはJavascriptを

ような何かをしようとしています

a = [11,22,33] 

:私は、この配列を更新したいと思います

var a = [1, 2, 3] 

a.map(repeat(2)); 

ただし、エラーになります。

私はこれを簡単にループすることができますが、より簡潔なコードを使用して練習しようとしています。

これは可能でしょうか?

+0

オブジェクトは文字列または数字として必要ですか? –

+1

'let x = 2; a.map(e => e *((1 << x)-1).toString(2)); 'あなたが望むくらい頻繁に繰り返す。 – ASDFGerte

+0

私は実際に文字列としてオブジェクトが必要です。私はそれを動作させるfiを見るためにtoStringを実行しようとします。 – rycankun

答えて

1

数字を文字列に変換し、値を繰り返して番号に変換することができます。

var a = [1, 2, 3] 
 
a = a.map(a => +a.toString().repeat(2)); 
 

 
console.log(a);

1

数字の繰り返しが必要な場合は、文字列を使用します。この目的のために便利なrepeat methodを持っている:

function repeat(times) { 
    return x => String(x).repeat(times); 
} 
a.map(repeat(2)).map(Number) 
:あなたの表記を使用したい場合は、あなたが mapコールバックとして使用されるように、別の関数を返す高階 repeat機能を確認する必要があり

a.map(x => Number(String(x).repeat(2)))); 

1

はい可能です。

function repeat(times) { 
 
    return function (value) { 
 
     return +String(value).repeat(times); 
 
    } 
 
} 
 

 
// Your code: 
 
var a = [1, 2, 3]; 
 
var result = a.map(repeat(2)); 
 
console.log(result);

mapメソッドは、引数としての機能を期待し、そうrepeat(2)への呼び出しは、関数を返す必要があります:あなたは、関数を返す関数としてrepeat定義することができます。その(内部)関数は、値を文字列に変換した後にString#repeatを使用し、結果をunary +で数値に戻します。

-1

単に、Array join() methodでそれを試してみてください。

ここ
a.map(x => Array(2).join(x)); 
0

あなたが行く、numberバージョンとstringバージョン

const doubleIt = n => Number(`${n}${n}`); 
 

 
const arr = [1, 2, 3, 55]; 
 
const strArr = arr.map(o => `${o}${o}`); 
 
const numArr = arr.map(o => o * 11); 
 
const numFromStringsArr = arr.map(o => doubleIt(o)); 
 

 
console.log(strArr); 
 
console.log(numArr); 
 
console.log(numFromStringsArr);

0

あなたは

var a = [1, 2, 3], n = 2; 
 
a = a.map(el => +Array(n).fill(el).join("")); 
 
console.log(a);
を文字列を数値に変換するには +演算子を使用し、パラメータとして ""とチェーン Array.prototype.join().map()コールバックの現在の要素で作成された配列を埋めるために Array.prototype.fill()を使用し、 Array()とN .lengthの配列を作成することができます

+0

IEのどのバージョンでも 'fill'はサポートされていないことに注意してください。 – Andy

+0

@Andyしばらく使っていない。 'Array.prototype.fill'のためのいくつかのpolyfillがあり、githubまたはgithubで利用できます – guest271314

+0

私もあなたと同じような答えに取り組んでいて、MDNの互換性テーブルをチェックしました。言及する価値があると思った。 – Andy

関連する問題