Я новичок в javascript.
У меня есть строка кода:
data.content_teaser.image_square_attachment_url
квадрат может меняться: у меня есть переменная, называемая contentType, которая может быть 'square'
, 'vertical'
или 'horizontal'
.
В ruby я могу использовать send с интерполяцией строк, как я могу получить то же самое в js?
Что-то вроде "data.content_teaser.image_" + contentType + "_attachment_url"
Javascript имеет 2 способа доступа к свойствам/методам объекта - точечные обозначения и квадратные обозначения. Последний использует строку, которую вы могли бы создать обычным способом для любой строки. Таким образом, эти 2 эквивалентны:
data.content_teaser.image_square_attachment_url;
data.content_teaser["image_square_attachment_url"];
Итак, чтобы ответить на ваш вопрос:
var contentType = "square";
var result = data.content_teaser["image_" + contentType + "_attachment_url"];
Вы можете использовать интерполяцию строк Javascript, поскольку ES2015 смотрите здесь https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals:
'string text ${expression} string text'
Итак, вы можете использовать что-то вроде этого:
let s = 'image_${contentType}_attachment_url'
И после этого:
data.content_teaser[s]