Javascript: ключ со значением массива - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь создать объект с ключом в качестве числа и значением в виде массива объектов.Как это можно сделать в javascript?

Я хочу создать объект, который выглядит следующим образом:

{Key: "1", value: [Object, Object, ...], key: "2", value: [Object, Object, ...], key:"N", value: [Object, Object, ...]}

Как это возможно в javascript / typcript?

Iпробовал:

let myObj = {};
myObj["1"] = myObj["1"].push(Object)

вышеуказанный код не работает.

Ответы [ 2 ]

2 голосов
/ 25 июня 2019

push возвращает новую длину массива - просто вызовите функцию (ничего не делая с возвращаемым значением), убедившись, что вы сначала инициализировали целевой массив:

let myObj = {};
myObj["1"] = myObj["1"] || [];
myObj["1"].push(Object);

Вы также можете определить пользовательский тип:

type objectContainingObjects = { [key: string]: object[] }
1 голос
/ 25 июня 2019

Это возможно и может быть достигнуто несколькими способами. Например, чтобы добиться того, что вам требуется с помощью TypeScript, вы можете сделать следующее:

/* Define a type describing the structure of your desired object (optional)
 */    
type CustomType = { [key: number]: Array<any> };

/* Create your object based on type definition with numbers as keys and array
   of objects as values */
const yourObject: CustomType = {
  1 : [1,2,3],
  2 : ['a','b','c'],
  3 : [ new Object(), new Object() ]
};

В JavaScript то же самое может быть достигнуто путем пропуска ввода:

const yourObject = {
  1: [1, 2, 3],
  2: ['a', 'b', 'c'],
  3: [new Object(), new Object()]
};

console.log(yourObject);

/* Adding more letters to value at key 2 */
yourObject[2].push('d', 'e', 'f');

console.log(yourObject);

Надеюсь, это поможет!

...