Fix a perf issue of <select multiple />
`indexOf` was used inside a loop. Use an object and `hasOwnProperty` instead.
Jun, WU committed
Dec 20, 2013 at 13:55 UTC
3c5710193c2a0947ddf8c05f920edbdbc4d66859
1 file changed
+4
-4
src/dom/components/ReactDOMSelect.js
+4
-4
@@ -65,17 +65,17 @@ function updateOptions() {
65
var options = this.getDOMNode().options;
66
var selectedValue, i, l;
67
if (multiple) {
68
- selectedValue = [];
68
+ selectedValue = {};
69
for (i = 0, l = value.length; i < l; ++i) {
70
- selectedValue.push('' + value[i]);
70
+ selectedValue['' + value[i]] = true;
71
}
72
} else {
73
selectedValue = '' + value;
74
}
75
for (i = 0, l = options.length; i < l; i++) {
76
var selected = multiple ?
77
- selectedValue.indexOf(options[i].value) >= 0 :
78
- selected = options[i].value === selectedValue;
77
+ selectedValue.hasOwnProperty(options[i].value) :
78
+ options[i].value === selectedValue;
79
80
if (selected !== options[i].selected) {
81
options[i].selected = selected;