Angenommen, Sie haben ein Objekt mit dem zu tun, zu ersetzen, können Sie 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)
verwenden Wenn die Zeichenfolge nicht in der replace
Objekt replace[value]
ist undefined
, also replace[value] || value
wird value
selbst ausgewertet.
Auf jeden Fall ist die for
definitiv leistungsfähigere, zumindest auf node.js, entsprechend benchmark.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
Hier ist der Code, den ich für den Test
verwendet
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 });
Sehr ordentlich, Vielen Dank! – lost9123193
@ lost9123193 Ich habe einige Versuche, und die 'für' ist mehr Leistung (siehe die aktualisierte Antwort) zumindest auf, wie ich es implementiert – rpadovani
ah Ich sehe, werde ich wahrscheinlich nicht mehr als 300 mögliche Einträge, aber in Bezug auf Skalierbarkeit Würdest du vorschlagen, ich bleibe bei der for-Schleife? – lost9123193