Javascript для возврата объявленного метода в виде строки

Я работаю с элементом svg и пытаюсь создать элемент text, динамически извлекая параметр, который передается аргументу функции ранее.

Например, минимальный образец

const data = [{ "Month": 1, "Value": 10000, "MonthName": "Jan" }, { "Month": 2, "Value": 20000, "MonthName": "Feb" }];

const data2 = data.map((x)=>x.Value);

// targeting the svg itself
const svg = document.querySelector("svg");

// variable for the namespace 
const svgns = "http://www.w3.org/2000/svg"

const text1 = document.createElementNS(svgns, "text")
text1.setAttribute('x', '10');
text1.setAttribute('y', '10');
text1.textContent = 'Value';
svg.appendChild(text1);
<svg class = "layer1" xmlns = "http://www.w3.org/2000/svg" width = "200" height = "200" viewBox = "0 0 200 200">
</svg>

В этом случае, есть ли способ, которым я могу javascript вернуть оператор const data2 в виде строки, чтобы я мог динамически генерировать текстовое содержимое, как показано ниже

const data = [{ "Month": 1, "Value": 10000, "MonthName": "Jan" }, { "Month": 2, "Value": 20000, "MonthName": "Feb" }];

const data2 = data.map((x)=>x.Value);

// targeting the svg itself
const svg = document.querySelector("svg");

// variable for the namespace 
const svgns = "http://www.w3.org/2000/svg"

const text1 = document.createElementNS(svgns, "text")
text1.setAttribute('x', '10');
text1.setAttribute('y', '10');
text1.textContent = `data.map((x)=>x.Value)`.match(/(?<=x\.)[a-zA-Z]+/gm);
svg.appendChild(text1);
<svg class = "layer1" xmlns = "http://www.w3.org/2000/svg" width = "200" height = "200" viewBox = "0 0 200 200">
</svg>

Поэтому вместо жесткого кодирования

text1.textContent = 'Value';

Я хочу написать следующее, поскольку const data2 будет меняться. Например, это может быть x.Month/x.MonthName.

text1.textContent = {a function that returns const data2 expression as string}`data.map((x)=>x.Value)`.match(/(?<=x\.)[a-zA-Z]+/gm);

Трудно понять ваш вопрос, вы можете перебрать массив и выполнить любые желаемые действия с текущим объектом?

0stone0 10.05.2022 17:47

Чтобы упростить, если я напишу const x =[1,2].length, есть ли способ в js, которым я могу вернуть [1,2].length в виде строки? x.toString(); возвращает 2, но я хочу, чтобы x.someFunc возвращал [1,2].length вместо 2.

smpa01 10.05.2022 17:52

Не думайте, что это возможно. Этот помогает, но, как вы сказали, не дает желаемого результата.

0stone0 10.05.2022 17:53

Как каждый, это звучит как х/у проблема, нужно объяснить, «почему» вы хотите это сделать?

0stone0 10.05.2022 17:54

Я уже объяснил выше с вариантом использования svg.

smpa01 10.05.2022 17:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

Вы должны решить это с уровнем косвенности. Поместите свойство в строковую переменную и используйте ее при вычислении data2, а также для textContent.

const data2_prop = 'Value';
const data2 = data.map((x) => x[data2_prop]);
...
text1.textContent = data2_prop;

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