2016-10-18 23 views
-1

配列内の文字列を置換する必要があります。私は何を取得したいことは、別の文字列を持つ要素の交換である場合、またはそこに元の文字列を使用して配列内の文字列を置換する

let result = []; 
source.forEach(el => { 
    switch (el) { 
     case 'replace': 
      result.push('with this'); break; 
     case ...: 
      ...; 
     default: 
      result.push(el); 
    } 
}); 
return result.join(','); 

:今、私は非常にエレガントな感じがしないforEach -loopとswitchを、使用しています一致しません。

ソース配列には50個の要素があり、置換配列には30個の要素があります。あなたは、配列の1・イン・ワン・アウト操作を望む場合には

答えて

1

は、.map機能が好ましい:私は見

return source.map(el => el === 'replace' ? 'with this' : el).join(','); 

EDITあなたが質問を更新しました、あなたが実際に持っていますあなたが置きたい30の異なる文字列。

let replaceFunc = (function() { 

    let replace = new Map([ 
     ['replace', 'with this'] 
    ]); 

    return source => source.map(el => replace.has(el) ? replace.get(el) : el).join(','); 
})(); 

生命維持がMapのワンタイム初期化を確実にするために使用され、返された機能:この場合、あなたは「前」と「後」の文字列が事前に移入されMapを使用する必要がありますMapで閉じられており、replaceFuncに割り当てられています。

> replaceFunc(['replace']); 
"with this" 
+0

'新しいマップ()'の部分は私にとっては機能しません。しかし、私は理由を見ません。私はエラーは出ませんが、出力もありません。 'replace.get(el)'はインデックスを必要としませんか? – user3142695

+0

Chrome 54で私のために働いています(質問でES6の矢印構文を使用した場合は、現代のブラウザやインタプリタを使用していると仮定しています)。 'replace.get()'へのパラメータはちょうど鍵です、この場合、ソース配列からの単語です。 – Alnitak

1

map交換するためのサンプル例を作る以下の代替

var result = source.map(function (e) { 
    return e === 'replace' ? 'with this' : e; 
}); 
1

var sample = ["aaa", "bbb", "replaceMe", "ccc", "ddd"]; 
 
var result = sample.map(function(ele, inx) { 
 
    if (ele == "replaceMe") { 
 
     return "newText"; 
 
    } else { 
 
     return ele; 
 
    } 
 
}); 
 
console.log(result);

関連する問題