var obj = {
0 : 'value 0',
1 : 'value 1',
2 : 'value 2',
3 : 'value 3',
4 : 'value 4'
}
delete obj[2];
执行上述操作时,将其与键2
的键值对删除。
到这里为止。但是我想要的是将输出键设置为0 1 3 4
,但我想重新排列键,例如0 1 2 3
。
答案 0 :(得分:1)
因为它是一个数组,我使用数组为您提供。如果从其中删除一个项目,它将自动更改密钥。例如:
var a = [
'value 0',
'value 1',
'value 2',
'value 3',
'value 4',
]
a[2].pop()
答案 1 :(得分:1)
您可以获取对象的值,而键是正32位整数(可以是数组的整数),则可以将此数组分配给对象,并使用新的键获取新的对象。
使用的方法:
Object.values
用于获取值数组,
Object.assign
用于获取数组的对象。
var object = { 0: 'value 0', 1: 'value 1', 2: 'value 2', 3: 'value 3', 4: 'value 4' }
delete object[2];
object = Object.assign({}, Object.values(object));
console.log(object);
答案 2 :(得分:1)
您可以执行以下操作,在删除后循环源数组并重新创建其键。
window.onload = function(){
var obj = {
0 : 'value 0',
1 : 'value 1',
2 : 'value 2',
3 : 'value 3',
4 : 'value 4'
}
console.log(obj);
delete obj[2];
reIndexArray(obj);
function reIndexArray(fromArray)
{
var startIndex = 0;
var toArray = {};
for(var key in fromArray)
{
toArray[startIndex] = obj[key];
startIndex++
}
console.log(toArray);
}
}
答案 3 :(得分:0)
您可以使用Object.values
将其更改为Array并使用.splice
方法。如果对象具有长度,则可以使用Array.from
方法代替Object.values
。
var obj = {
0 : 'value 0',
1 : 'value 1',
2 : 'value 2',
3 : 'value 3',
4 : 'value 4'
};
var arr = Object.values(obj);
// ['value 1', 'value 2', 'value 3', 'value 4']
// Remove a value from key 2.
arr.splice(2, 1); // splice(from[, amount[, ...values to push]])
// arr = ['value 1', 'value 2', 'value 4']
如果要返回原始对象,可以使用Object.assign
。
Object.assign(obj, arr);
// obj = {0: 'value 0', 1: 'value 1', 2: 'value 3', 3: 'value 4', 4: 'value 4'}
// There is no value of key 5 in arr. So Object.assign can't replace the key 5. You have to delete it.
delete obj[4];
// obj = {0: 'value 0', 1: 'value 1', 2: 'value 3', 3: 'value 4'}
答案 4 :(得分:0)
您也可以使用Map代替常规对象。但是取决于您的用例。
const map = new Map([[0, 'value0 '],[1, 'value1 '],[2, 'value2']]);
map.delete(1)
const values = [...map.values()];
const newMap = new Map(values.map((value, index) => [index, value]))