我有以下数组
0: {value: 29, label: "Hamgurguesas Carne"}
1: {value: 31, label: "Pizza Cancha"}
2: {value: 28, label: "Pizza Muzzarella"}
但是我想重新编号等于值的索引
示例:
29: {value: 29, label: "Hamgurguesas Carne"}
31: {value: 31, label: "Pizza Cancha"}
28: {value: 28, label: "Pizza Muzzarella"}
我尝试使用.slice,但是我不走运,可以在创建数组之前或之后执行此操作
答案 0 :(得分:1)
您不能对数组的索引重新编号。它是一个自动设置的序号,用于标识信息在阵列中的位置。 它始终以0-第一个元素开头。
也许您想要的不是使用数组,而是包装对象的对象。 像这样:
const comidas = {
29: {value: 29, label: "Hamgurguesas Carne"}
31: {value: 31, label: "Pizza Cancha"}
28: {value: 28, label: "Pizza Muzzarella"}
};
例如,通过这种方式,您可以通过键29、31或28访问内部对象。 唯一需要注意的是,由于密钥始终被视为字符串,因此无法使用来访问它们。像平常一样但您必须使用[]:
坏:
comidas.29 >> ERROR: Uncaught SyntaxError
好:
comidas[29] >> {value: 29, label: "Hamgurguesas Carne"}
comidas[29].label >> "Hamgurguesas Carne"
答案 1 :(得分:1)
这可能是您要寻找的:)
有关解决方案中使用的方法的更多信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
const o = {
0: {value: 29, label: "Hamgurguesas Carne"},
1: {value: 31, label: "Pizza Cancha"},
2: {value: 28, label: "Pizza Muzzarella"},
};
const res = Object.entries(o).reduce((s, [_, v]) => (s[v.value] = v, s), {});
console.log(res);
答案 2 :(得分:0)
试试这个
// assign new key with value of prior key
array[29] = array[0];
// remove prior key
delete array[0];
答案 3 :(得分:0)
您无法对数组重新编号。总是索引从0到(数组长度-1)。
例如,您可以将前28个元素添加到数组中。
另一种方式:您可以使用对象而不是数组。
var dict = {};
for (var i=0; i<arr.length; i++){
dict[arr[i]['value']] = arr[i];
}