2017-07-14 7 views
0

文字列の数値の集合である変数を取ることができます。たとえば、strと呼び、1つおきに1から10の間の乱数を挿入できますその文字列に今、私はこのコードを持っている:JavaScript内の他のすべての空白を挿入する

str.toString().match(/.{1}/g).join((Math.floor((Math.random() * 10) 
+ 1)).toString()) 

これはほとんどそれをしない、しかし、それは1つの乱数を生成し、代わりのたびに他のすべてのスペースのための新しい乱数を生成することを挿入します。たとえば、str = '1234567890'の場合、18293547596173889302のようなものに変えたいと思っていますが、代わりに182838485868789808のようなものがあります。どんな助けもありがとう、ありがとう!

答えて

1

あなたが示されたコードは一度(Math.floor((Math.random() * 10) + 1)).toString()一部を計算し、.join()方法に結果を渡すこの

var str = '1234567890'; 
 
var result = str.toString().split('').map(n => n + (Math.floor((Math.random() * 10) 
 
+ 1))).join(''); 
 
console.log(result);

+0

ありがとうございました! – user3385777

+0

冗長 '.toString()'を削除した場合、1行に収まる... – nnnnnn

2

のようなマップを使用することができます。

その後、あなたは、交換ごとに一度呼び出される関数を使用することができますので、私は、代わりに文字列.replace()方法を使用して検討したい:

var str = '1234567890' 
 

 
var output = str.replace(/./g, function(m) { 
 
    return m + Math.floor((Math.random() * 10) + 1) 
 
}) 
 

 
console.log(output)

/./g試合すべての文字、1つの時間が経過し、一致した文字がコールバック関数に渡され、置換で使用できるようになります。

+連結演算子は乱数を自動的に文字列に変換するため、.toString()に電話する必要はありません。

EDIT:あなたの元.join()コードが新しい数字に間の既存の数字を挿入注ので、入力の最後の文字の後に何も追加しませんでしたが、あなたのサンプル出力は、すべての既存の数字を含む後にランダムな数字を追加しました最後の一つ。私のコードは後者を行います。最後にランダムな数字を追加したくない場合は、結果に.slice(0, -1)を呼び出すことで削除できます。

+0

ありがとうございます!両方の答え私は完全に仕事を得たので、私はちょうど1つを選び、それに行く! – user3385777

+0

ようこそ。 (ところで、入力の数字の間に0〜9の数字の間に1〜10の数字を挿入するのはちょっと変わっているようです。なぜならそれは出力の合計長さが無作為に選ばれた回数に依存して変わるからですもしそれがあなたが望むものなら、それはあなたが持っているものです。) – nnnnnn

+0

ああ本当にありがとう、ハハ。修正するには、+ 1を削除するだけですか? – user3385777

関連する問題