Шлейф ответов только что появился, и вот еще один!
Первый вариант использует встроенный метод js join, который устраняет необходимость в сокращении. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join
var authors = ['some author', 'another author', 'last author'];
var authorString = authors.join(",");
console.log(authorString);
ВАЖНО - если вы массив содержит объекты, то вы можете отобразить его до прихода:
var authors = [{name: 'some author'},{name: 'another author'},{name: 'last author'}]
var authorString = authors.map(function(author){
return author.name;
}).join(",");
console.log(authorString);
или, если вы действительно разжег об использовании уменьшить, просто убедитесь, что вы используете предыдущее значение, текущее значение и индекс при передаче в обратном вызове. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
var authorString = authors.reduce(function(prevVal,currVal,idx){
return idx == 0 ? currVal : prevVal + ', ' + currVal;
}, '')
console.log(authorString);
ВАЖНО - снова если массив содержит объекты, то вы хотите, чтобы убедиться, что вы используете «Свойство Имя»:
var authors = [{name: 'some author'},{name: 'another author'},{name: 'last author'}];
var authorString = authors.reduce(function(prevVal,currVal,idx){
return idx == 0 ? currVal.name : prevVal + ', ' + currVal.name;
}, '')
console.log(authorString);
почему бы не использовать присоединиться? – epascarello
Если вы хотите использовать сокращение или цикл по какой-либо причине, вам нужно добавить проверку, чтобы увидеть, является ли текущий элемент цикла последним. Но просто используйте join, это одна строка кода, чтобы получить то, что вы хотите. – Shilly