Один массив для нескольких массивов JavaScript - PullRequest
0 голосов
/ 28 июня 2018

y имеют ассоциативный массив и хотят сохранить несколько массивов только с одним значением ключа, например:

[
  key1: value1,
  key2: value2,
  key3: value3
]

[ key1: value1 ]
[ key2: value2 ]
[ key3: value3 ]

1 Ответ

0 голосов
/ 29 июня 2018

Ассоциативные массивы аналогичны объектам в JavaScript, и большинство всех, кого я знаю, ссылаются на них как на «Объекты», а не на «Ассоциативные массивы» (в контексте JavaScript). Этот ответ также будет ссылаться на ассоциативные массивы как объекты.

Ни один из объектов в вашем вопросе не является действительным.
Вы должны обернуть литералы объекта в фигурные скобки, а не в квадратные (квадратные скобки предназначены для литералов массива). Вам необходимо присвоить их переменной (или передать их в качестве параметра, или поставить перед ними ключевое слово return и т. Д.).

Я предполагаю, что объект, который вы хотите превратить в несколько объектов, - ваш первый пример, а второй пример - то, как он должен выглядеть, когда закончите. Вот ваши примеры, переписанные в соответствии с этим предположением.

// assign it to a variable
var firstExample = {
  key1: 'value1',   // dunno if value1, 2, or 3 are strings, but stringifying them works for an example
  key2: 'value2',
  key3: 'value3'
};

var secondExample = [   // I assume you want an array of objects, each with a single key/value pair.
    { key1: 'value1' },
    { key2: 'value2' },
    { key3: 'value3' },
];

Тем не менее, самый простой метод, который я могу придумать, чтобы выполнить то, что вы ищете, - это получить ключи вашего объекта, а затем перебрать их и сопоставить их с отдельными объектами.

var firstExample = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

var secondExample = [
    { key1: 'value1' },
    { key2: 'value2' },
    { key3: 'value3' },
];

// ES6 syntax
const arrayOfObjects = Object.keys(firstExample).map(key => ( { [key]: firstExample[key] } ));

console.log('Array of objects', arrayOfObjects);
console.log('arrayOfObjects is equivalent to secondExample:', JSON.stringify(arrayOfObjects) === JSON.stringify(secondExample));

// ES5 syntax
var es5 = Object.keys(firstExample).map(function (key) {
    var o = {};
    o[key] = firstExample[key];
    return o;
});

console.log('ES5-syntax array of objects', es5);
console.log('es5 is equivalent to secondExample:', JSON.stringify(es5) === JSON.stringify(secondExample));
...