Я пытаюсь создать структуру javascript, которая выглядит так:
[{'red': {color:'red},...}]
Начиная с массива цветов:
const COLORS = ['red','yellow']
Это то, что я пробовал:
Const finalArray = COLORS.map(color => ({[color]: {color}}))
Однако это создает массив, который выглядит так:
[{red: {color:'red'}}]
Вместо [{'красный': {цвет:'красный'}}]
Это не то же самое и не позволит библиотеке, которую я использую, понять массив.
Любая идея приветствуется.
Я отредактировал вопрос, так как там были опечатки. Надеюсь, теперь стало понятнее.
Спасибо
Независимо от того, заключено имя свойства в кавычки или нет, они одинаковы.
Это одно и то же. Имена свойств объекта могут быть заключены в одинарные или двойные кавычки, но заключение в кавычки не требуется, если имя является допустимым именем переменной.
В javascript объект, отмеченный { 'red': 'something' } и { red: 'something' }, одинаков.
Каковы различия между:
[{red: {color:'red'}}]
// and
[{'red': {color:'red'}}]
Если это только вопросы, связанные с цитатой, вы можете сделать так:
COLORS.map(color => ({ [`'${color}'`]: { color } }));
Спасибо, это именно то, что я искал. Что касается всех других ответов, в которых говорится, что я, очевидно, смешиваю определение объекта с массивами, скажем, я набрал вопрос со своего телефона и забыл открытие и закрытие «}», но я с удовольствием вижу, что вы и некоторые другие автоматически исправили опечатку . Приятно видеть, что все еще есть люди в переполнении стека, которые читают вопрос с предпосылкой, что автор не глуп. Спасибо, приятель, простое решение, я об этом не подумал. Ценится.
@user2097439 user2097439 это может быть довольно грубо, но не забудьте отметить это как «решено», чтобы помочь другим людям с такой же проблемой быть перенаправленными на соответствующий ответ.
Извините, спасибо, что напомнили, готово!
Я должен сказать, что этот ответ может ввести в заблуждение, потому что он добавляет (одинарные) кавычки к имени свойства, и в итоге вы получите что-то вроде: [{"'red'":{"color":"red"}}. Вы можете проверить это на https://playcode.io/1189383.
@user2097439 user2097439 Никто не хотел быть с тобой суровым. И дело не в массивах и объектах (так никто не говорил). Речь идет о внутреннем и внешнем представлении. Написана ли ваша библиотека на JavaScript и ожидает ли она объект? Затем забудьте о кавычках (за исключением случаев, когда эти кавычки являются частью имени свойства). Или он ожидает строку (т.е. внешнее представление объекта)?
Это всего лишь два способа представления одного и того же массива/объекта. Если вам нужна строка, содержащая каноническое представление массива/объекта (с двойными кавычками вокруг имен свойств), вы можете использовать JSON.stringify(finalArray).
Обратите внимание, что это будет цитировать ВСЕ имена ваших свойств, например:
[{"red":{"color":"red"}}]
И обратите внимание, что это строка, как если бы вы это сделали:
finalString = '[{"red":{"color":"red"}}]'
(Примечание: этот вопрос был закрыт, и я согласен, что он недостаточно ясен. Но совершенно очевидно, что пользователь путает внутреннюю структуру массива/объекта с его внешним представлением и с тем, как массив/объект отображается среда разработки, браузер и т. д. Поскольку это очень распространенная проблема, в основном у новых программистов или новичков в инструменте, вопрос и ответы могут быть полезными.)
However this produces an array that looks like that: [...] instead of
Они одинаковые?!