diff -u b/core/lib/Drupal/Core/Render/Element/Weight.php b/core/lib/Drupal/Core/Render/Element/Weight.php --- b/core/lib/Drupal/Core/Render/Element/Weight.php +++ b/core/lib/Drupal/Core/Render/Element/Weight.php @@ -59,10 +59,12 @@ for ($n = (-1 * $element['#delta']); $n <= $element['#delta']; $n++) { $weights[$n] = $n; } - if (!in_array($element['#default_value'], $weights)) { - $weights[$element['#default_value']] = $element['#default_value']; + $default_value = (int) $element['#default_value']; + if (!isset($weights[$default_value])) { + $weights[$default_value] = $default_value; ksort($weights); } + unset($default_value); $element['#options'] = $weights; $element += $element_info_manager->getInfo('select'); } diff -u b/core/tests/Drupal/Tests/Core/Render/Element/WeightTest.php b/core/tests/Drupal/Tests/Core/Render/Element/WeightTest.php --- b/core/tests/Drupal/Tests/Core/Render/Element/WeightTest.php +++ b/core/tests/Drupal/Tests/Core/Render/Element/WeightTest.php @@ -44,7 +44,7 @@ Weight::processWeight($element, $form_state, $complete_form); $this->assertTrue( - in_array($element['#default_value'], $element['#options']), + isset($element['#options'][$element['#default_value']]), 'Default value exists in the #options list' ); }