@samitouri / QOS-React-2 / commits / 3c5710193c

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;