Если вы преобразуете свой объект в массив , тогда вы можете использовать методы массива с ним.
массив объект в основном нуждается в length
свойство и ключи, которые являются положительными целыми числами. Значение length
должно быть установлено на еще на , чем самый высокий индекс. Итак, если у вас есть ключи 1, 2, 3
, вам нужно length: 4
. Да, это немного вводит в заблуждение, поскольку есть только три элемента, но length
более точно называется «следующий доступный индекс».
В любом случае, если вы преобразуете свой объект, тогда вы можете использовать Array#splice
и установите цель, используя Function#call
. Большинство методов массива преднамеренно обобщены c, поэтому они могут работать с любыми массивами:
const obj = {
1: ["foo"],
2: ["bar"],
3: ["baz"],
length: 4
}
//delete starting from index 2 and remove 1 item
Array.prototype.splice.call(obj, 2, 1)
console.log(obj);
Обратите внимание, как индексы после удаленного смещались, и length
также корректировался автоматически.
Если вы не знаете, что такое length
в настоящее время, вы можете легко найти его:
const obj = {
1: ["foo"],
2: ["bar"],
3: ["baz"]
}
const keys = Object
.keys(obj) //get all keys
.map(Number) //convert to numbers
.filter(key => Number.isInteger(key) && key >= 0); //leave only positive integers
//find the highest
const highestKey = keys.reduce((a, b) => Math.max(a, b), -1);
//set the length to the next possible index
obj.length = highestKey + 1;
//delete starting from index 2 and remove 1 item
Array.prototype.splice.call(obj, 2, 1)
console.log(obj);