如何将项目插入到特定索引的数组中

时间:2019-11-26 22:57:24

标签: javascript reactjs

我有以下数组

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,但是我不走运,可以在创建数组之前或之后执行此操作

4 个答案:

答案 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];
}