Сначала небольшая семанти c балл. Это не "JSON Array". Это массив JavaScript объектов. JSON относится к строковому представлению этих объектов (JavaScript Обозначение объекта).
Это важно, потому что "executementText" ожидает строку. Вы можете превратить JavaScript объекты в строку, используя метод JSON.stringify()
, так что вы будете делать что-то вроде
const text = JSON.stringify( JSONarray );
Однако это, вероятно, не то, что вы хотите, так как помощник будет читать это как что-то вроде
Открывающая скобка Открытая скобка Цитата Имя Цитата двоеточие Цитата Стивен Цитата Закрывающая скобка, ...
и т. д.
Вместо этого вам, вероятно, следует написать функцию, которая принимает массив и превращает его в строку. Проще говоря, вы можете вызвать join()
только для значений имен. Примерно так:
const names = JSONarray.map( o => o.name ); // Gets just an array of the names
const namesString = names.join(', '); // Joins them into a single string, separated by commas
const text = `The names are: ${namesString}`;
Это лучше, и то, что можно прочитать, будет выглядеть примерно так:
Имена: Стивен, Кларк, Кенсингтон
Но это не то, как люди на самом деле читают (или слушают) имена. Мы ожидаем, что это будет что-то вроде
Имена: Стивен, Кларк и Кенсингтон
Это так часто встречается, что multivocal включает шаблон Функция, чтобы сделать это на основе списка строк. Таким образом, ваш шаблон будет выглядеть примерно так:
"The names are: {{Oxford names}}"
Если вы не используете мультивалюту, что-то вроде этого будет работать:
/**
* Similar to Array.join(), but using rules for the Oxford comma.
* @param values The array to return joined values for
* @param sep1 The normal separator for each element (defaults to ", ")
* @param sep2 The separator before the final element (defaults to "and ")
* @returns {*}
*/
function oxford( values, sep1=", ", sep2="and " ){
if( !Array.isArray( values ) ){
return values;
} else if( values.length === 0 ){
return '';
} else if( values.length === 1 ){
return values[0];
} else if( values.length === 2 ){
return values[0]+' '+sep2+values[1];
}
var ret = '';
for( var co=0; co<values.length-1; co++ ){
ret += values[co]+sep1;
}
ret += sep2;
ret += values[values.length-1];
return ret;
};
const namesString = oxford( names );
const text = `The names are: ${namesString}`;