Я также не знаю значение индекса этого объекта
blockquote>, для которого вы можете использовать findIndex . Сначала получите индекс требуемого объекта, а в другой переменной получите последний объект в массиве. Затем поменяйте их местами
var arrayData = [{ label: "data", value: "data" }, { label: "data", value: "data" }, { label: "Others", value: "Others" }, { label: "data", value: "data" }, ] let findIndex = arrayData.findIndex(function(item) { return item.label === 'Others' && item.value === 'Others' }) let storeLastVal = arrayData[arrayData.length - 1]; let otherVal = arrayData[findIndex] arrayData[findIndex] = storeLastVal; arrayData[arrayData.length - 1] = otherVal; console.log(arrayData)
Этот вид класса известен как моносостояние - это несколько отличается от одиночного элемента.
Почему использование моносостояние, а не одиночный элемент? В их исходной статье на шаблоне Bell & Crawford предлагает три причины (перефразируемый мной):
Я должен признать, я не нахожу ни один из них особенно востребованным. С другой стороны, моносостояние определенно не хуже, чем одиночный элемент.
Robert C. Martin написал статью несколько раз назад о различиях между моно шаблоном состояния и шаблоном "одиночка".
Рассмотрите семейство Регистрирующихся классов. Они все реализуют "LogMessage (сообщение, файл, line_number). Некоторые отправляют сообщения в stderr, некоторые посылают электронное письмо ряду разработчиков, некоторый инкремент количество конкретного сообщения в таблице частот сообщения, некотором маршруте к/dev/null. Во времени выполнения программа проверяет свой вектор аргумента, реестр или переменные среды, для которых Вход техники для использования и инстанцирует Регистрирующейся Singleton с объектом от подходящего класса, возможно загружая предоставленный конечного пользователя DLL, чтобы сделать так. Та функциональность жестка для дублирования с чистой статической Singleton.
класс со всеми статическими участниками/методами своего рода одноэлементный шаблон разработки
Класс - не шаблон. Когда мы говорим о классах, мы можем сказать, что класс реализует шаблон.
Статические функции - не являются функциями членства, они подобны на глобальных функциях. Возможно, Вам не нужен никакой класс?
Кавычка из Википедии:
В разработке программного обеспечения шаблон "одиночка" является шаблоном разработки, который используется для ограничения инстанцирования класса к одному объекту.
По этому определению Ваша реализация не является одноэлементной реализацией - Вы не используете общую идею Одна (или несколько в расширенном определении) экземпляр класса.
Но иногда (не всегда) использование класса со всеми статическими функциями и шаблоном "одиночка" - не имеет значимое различие.
Для одиночного элемента все конструкторы должны быть частными, так, чтобы можно было получить доступ только через функцию. Но Вы достаточно близки к нему.