Структура JSON в javascript

Я пытаюсь создать структуру javascript, которая выглядит так:

[{'red': {color:'red},...}]

Начиная с массива цветов:

const COLORS = ['red','yellow']

Это то, что я пробовал:

Const finalArray = COLORS.map(color => ({[color]: {color}}))

Однако это создает массив, который выглядит так:

[{red: {color:'red'}}]

Вместо [{'красный': {цвет:'красный'}}]

Это не то же самое и не позволит библиотеке, которую я использую, понять массив.

Любая идея приветствуется.

Я отредактировал вопрос, так как там были опечатки. Надеюсь, теперь стало понятнее.

Спасибо

However this produces an array that looks like that: [...] instead of Они одинаковые?!
tkausl 14.02.2023 17:12

Независимо от того, заключено имя свойства в кавычки или нет, они одинаковы.

Andrew Parks 14.02.2023 17:12

Это одно и то же. Имена свойств объекта могут быть заключены в одинарные или двойные кавычки, но заключение в кавычки не требуется, если имя является допустимым именем переменной.

axiac 14.02.2023 17:12

В javascript объект, отмеченный { 'red': 'something' } и { red: 'something' }, одинаков.

Eduardo Elias Saléh 14.02.2023 17:15
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Все мы знаем, что [] instanceof Array возвращает true, но почему [] instanceof Object тоже возвращает true?
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) - это древовидная структура данных, которая представляет структуру и иерархию исходного кода на языке...
2
4
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Каковы различия между:

[{red: {color:'red'}}]
// and
[{'red': {color:'red'}}]

Если это только вопросы, связанные с цитатой, вы можете сделать так:

COLORS.map(color => ({ [`'${color}'`]: { color } }));

Спасибо, это именно то, что я искал. Что касается всех других ответов, в которых говорится, что я, очевидно, смешиваю определение объекта с массивами, скажем, я набрал вопрос со своего телефона и забыл открытие и закрытие «}», но я с удовольствием вижу, что вы и некоторые другие автоматически исправили опечатку . Приятно видеть, что все еще есть люди в переполнении стека, которые читают вопрос с предпосылкой, что автор не глуп. Спасибо, приятель, простое решение, я об этом не подумал. Ценится.

user2097439 14.02.2023 20:54

@user2097439 user2097439 это может быть довольно грубо, но не забудьте отметить это как «решено», чтобы помочь другим людям с такой же проблемой быть перенаправленными на соответствующий ответ.

Paul-Marie 15.02.2023 08:36

Извините, спасибо, что напомнили, готово!

user2097439 15.02.2023 08:44

Я должен сказать, что этот ответ может ввести в заблуждение, потому что он добавляет (одинарные) кавычки к имени свойства, и в итоге вы получите что-то вроде: [{"'red'":{"color":"red"}}. Вы можете проверить это на https://playcode.io/1189383.

Diego Ferruchelli 15.02.2023 16:18

@user2097439 user2097439 Никто не хотел быть с тобой суровым. И дело не в массивах и объектах (так никто не говорил). Речь идет о внутреннем и внешнем представлении. Написана ли ваша библиотека на JavaScript и ожидает ли она объект? Затем забудьте о кавычках (за исключением случаев, когда эти кавычки являются частью имени свойства). Или он ожидает строку (т.е. внешнее представление объекта)?

Diego Ferruchelli 15.02.2023 17:15

Это всего лишь два способа представления одного и того же массива/объекта. Если вам нужна строка, содержащая каноническое представление массива/объекта (с двойными кавычками вокруг имен свойств), вы можете использовать JSON.stringify(finalArray).

Обратите внимание, что это будет цитировать ВСЕ имена ваших свойств, например:

[{"red":{"color":"red"}}]

И обратите внимание, что это строка, как если бы вы это сделали:

finalString = '[{"red":{"color":"red"}}]'

(Примечание: этот вопрос был закрыт, и я согласен, что он недостаточно ясен. Но совершенно очевидно, что пользователь путает внутреннюю структуру массива/объекта с его внешним представлением и с тем, как массив/объект отображается среда разработки, браузер и т. д. Поскольку это очень распространенная проблема, в основном у новых программистов или новичков в инструменте, вопрос и ответы могут быть полезными.)

Другие вопросы по теме