У меня есть требование найти конкретную запись из массива и переместить ее в первую позицию (индекс 0), а индекс 0 должен перейти к следующему индексу и так далее.
Я не хочу удалять или дублировать какую-либо запись из массива. Это то, что я пробовал, выдает ошибку splice is not defined
var record = data.find(x => x.CodeLovId == existingGridCellItem);
if (record !== null) {
data.remove(record)
data.splice(0, 0, record);
}
А ниже код дублирует записи и удаляет существующие
var record = data.find(x => x.CodeLovId == existingGridCellItem);
if (record !== null) {
data[0] = record
}
Бывший -
arr1 = ['YES', 'NO', 'OK']
Item to move ['NO']
Ans - arr1 = ['NO', 'YES', 'OK']
Как мне это сделать ?
Вам нужны индексы для управления массивами. Получить только предмет не получится с вашим кодом.
Вместо
const
array = [1, 2, 3, 4, 5],
index = array.findIndex(v => v === 4);
if (index !== -1) array.unshift(...array.splice(index, 1));
console.info(array);
Если искомое значение недоступно в списке, оно все равно изменит порядок. array.findIndex(v => v === 24);
Вывод: [5, 1, 2, 3, 4]
если значения не в массиве, вам необходимо заранее проверить работоспособность. Пожалуйста, см. редактирование.
Почему вы отвечаете на вопросы, которые явно повторяются?
@Dexygen, проблема оператора заключается не только в том, чтобы добавить элемент в начало массива, но и в том, чтобы найти индекс для удаления элемента. цель куколки касается только добавления перед массивом, но не всего остального.
Вы лицемерите, ОП уже продемонстрировал, что знает шаги, прежде чем отменить смену.
Вы можете использовать splice
и unshift
, чтобы удалить значение из индекса и поставить его на первую позицию.
const list = [1, 2, 3, 4, 5];
const record = 31;
const index = list.indexOf(record);
if (index !== -1) {
list.splice(index, 1);
list.unshift(record);
}
console.info(list);
Является ли
data
правильным массивом? Странно, что вы получаете эту ошибку, если это так. У массивов нет собственного методаremove
, поэтому я ожидаю, что это что-то другое.