2017-02-16 7 views
2

この関数ではmatchの目的は何ですか?私はそれを削除しようと結果はjavacript関数のパラメータに値を配置する

NaNの1は、NaN 2、及び以下引けるコードのNaNで101

var stock = "1 lemon, 2 cabbages, and 101 eggs"; 
 
function minusOne(amount, unit) { 
 
    amount = Number(amount) - 1; 
 
    if (amount == 1) // only one left, remove the 's' 
 
    unit = unit.slice(0, unit.length - 1); 
 
    else if (amount == 0) 
 
    amount = "no"; 
 
    return amount + " " + unit; 
 
} 
 
console.log(stock.replace(/(\d+) (\w+)/g, minusOne));


出力されます。

なしレモン、1つのキャベツ、および100個の卵

var stock = "1 lemon, 2 cabbages, and 101 eggs"; 
 

 
function minusOne(match, amount, unit) { 
 
    amount = Number(amount) - 1; 
 
    if (amount == 1) // only one left, remove the 's' 
 
    unit = unit.slice(0, unit.length - 1); 
 
    else if (amount == 0) 
 
    amount = "no"; 
 
    return amount + " " + unit; 
 
} 
 
console.log(stock.replace(/(\d+) (\w+)/g, minusOne));

Code Reference

+0

なぜあなたの金額はマイナスですか?以下のコードをご覧ください。 amount = Number(amount) - 1; –

+0

@RanaGhosh私はただのブログを読んでいます。申し訳ありませんが、私は彼がそのコードで意味することについてはありません。私は参照を含める。 – KiRa

+1

コールバックとして 'replace'によって' minusOne'関数が使用されています。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace – haim770

答えて

4

String.prototype.replace()関数は、オプションの関数パラメータhereを取ります。

matchを取り除くとmatchamount(あなたの場合)に置き換えるのは、それが機能の組み込みの動作であるからといって、それだけです。単に意味をなさないだけです。

+0

リンクをありがとう。 – KiRa

1

チェックMDN、あなたはそれがのコールバック関数の最初のパラメータがわかりますreplace

+0

リンクありがとうございます。 – KiRa

関連する問題