のArray内の文字列を置き換えます。は、私は次の配列を持って求める方法の改善とJavascript
["tiger", "wolf", "diary"]
現在、私は、forループを横断して変更することがその名を必要とする文字列が存在する場合、それは、私は新しい値に置き換えるいない場合は、確認するためにチェックしています。 forループは動作しますが、これを行うにはより良い方法があるのだろうかと思います。
のArray内の文字列を置き換えます。は、私は次の配列を持って求める方法の改善とJavascript
["tiger", "wolf", "diary"]
現在、私は、forループを横断して変更することがその名を必要とする文字列が存在する場合、それは、私は新しい値に置き換えるいない場合は、確認するためにチェックしています。 forループは動作しますが、これを行うにはより良い方法があるのだろうかと思います。
文字列がreplace
オブジェクトにない場合は、Array.map
var replace = {
'cat': 'tiger',
'dog': 'wolf',
'cow': 'diary',
};
var starter = ["cat", "dog", "cow"];
var final = starter.map(value => replace[value] || value);
console.log(final)
を使用することができますreplace[value]
はundefined
なので、replace[value] || value
は評価value
です。
はとにかく、for
はそれに応じてbenchmark.jsに、少なくともNode.jsの上、間違いなく、より実施している。ここで
Array.map x 2,818,799 ops/sec ±1.90% (76 runs sampled)
for array x 9,549,635 ops/sec ±1.86% (79 runs sampled)
Fastest is for array
私は
var Benchmark = require('benchmark');
var suite = new Benchmark.Suite;
suite
.add('Array.map', function() {
var replace = {
'cat': 'tiger',
'dog': 'wolf',
'cow': 'diary',
};
var starter = ["cat", "dog", "cow"];
var final = starter.map(value => replace[value] || value);
})
.add('for array', function() {
var replace = {
'cat': 'tiger',
'dog': 'wolf',
'cow': 'diary',
};
var starter = ["cat", "dog", "cow"];
var final = [];
for (var i = 0; i < starter.length; i++) {
final.push(replace[starter[i]] || starter[i]);
}
})
// add listeners
.on('cycle', function(event) {
console.log(String(event.target));
})
.on('complete', function() {
console.log('Fastest is ' + this.filter('fastest').map('name'));
})
// run async
.run({ 'async': true });
function transform(str){
//logic to transform goes here
}
var massaged = myArr.map(transform);
おそらくあなたが求めているのは?ここ
マップ参照:あなたがするの交換を持つオブジェクトを持っていると仮定するとhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
非常にきちんとしたテストのために使用されるコード、ありがとう! – lost9123193
@ lost9123193私はいくつか試してみましたが、少なくともforを実装した方法では、 'for'はよりパフォーマンスが良いです(更新された答えを見てください) – rpadovani
ああ、おそらく300を超えるエントリーはありませんが、スケーラビリティ私はforループに固執するとお勧めしますか? – lost9123193