diff --git a/app/code/Magento/Ui/view/base/web/js/lib/ko/bind/optgroup.js b/app/code/Magento/Ui/view/base/web/js/lib/ko/bind/optgroup.js
index b4ef5df5a1340ed510a92e0378953cc1a5fa09ce..b95709baf311418d8a362f9a7ad86f1f40c389fb 100644
--- a/app/code/Magento/Ui/view/base/web/js/lib/ko/bind/optgroup.js
+++ b/app/code/Magento/Ui/view/base/web/js/lib/ko/bind/optgroup.js
@@ -67,8 +67,13 @@ define([
                 if (typeof unwrappedArray.length === 'undefined') { // Coerce single value into array
                     unwrappedArray = [unwrappedArray];
                 }
+
                 // Filter out any entries marked as destroyed
                 filteredArray = ko.utils.arrayFilter(unwrappedArray, function (item) {
+                    if (item && !item.label) {
+                        return false;
+                    }
+
                     return includeDestroyed || item === undefined || item === null || !ko.utils.unwrapObservable(item._destroy);
                 });
                 filteredArray.map(recursivePathBuilder, null);
@@ -211,8 +216,8 @@ define([
                 // IE6 doesn't like us to assign selection to OPTION nodes before they're added to the document.
                 // That's why we first added them without selection. Now it's time to set the selection.
                 if (previousSelectedValues.length) {
-                    var isSelected = ko.utils.arrayIndexOf(previousSelectedValues, ko.selectExtensions.readValue(newOptions[0])) >= 0;
-                    ko.utils.setOptionNodeSelectionState(newOptions[0], isSelected);
+                    var isSelected = ko.utils.arrayIndexOf(previousSelectedValues, ko.selectExtensions.readValue(newOptions.value)) >= 0;
+                    ko.utils.setOptionNodeSelectionState(newOptions.value, isSelected);
 
                     // If this option was changed from being selected during a single-item update, notify the change
                     if (itemUpdate && !isSelected) {