У меня есть массив чисел [1,2,3,4,5,6,7,8,9,10], и я хочу превратить его в строку, подобную этой: '1,2 3,4 5,6 7 ,8 9,10'. Есть ли какой-нибудь быстрый и простой способ сделать это в javascript или мне нужно использовать цикл?
for(let i = 0; i < array.length; i++){
if (i%2 == 0){
res += array[i] + ',';
} else {
res += array[i] + ' ';
}
}
Похоже, никто не читает ваш вопрос, 5 совершенно неверных ответов :P
@CertainPerformance хорошо 2 сейчас. И еще один, пока я печатал это
О, хотя вы могли бы добавить альтернативные ','
' '
s в условный оператор, удалив if
s
Вы можете получить пары с запятой, а затем присоединиться к массиву с пробелами для строки, но вам все еще нужен цикл
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
temp = [],
i = 0,
string;
while (i < array.length) {
temp.push(array.slice(i, i += 2).join());
}
string = temp.join(' ');
console.info(string);
Вы можете использовать уменьшать, чтобы получить желаемый результат:
[1,2,3,4,5,6,7,8,9,10]
.reduce((acc, val, idx) =>
idx % 2 === 0
? (acc ? `${acc} ${val}` : `${val}`)
: `${acc},${val}`, '')
// "1,2 3,4 5,6 7,8 9,10"
Воспользовавшись преимуществом третьего параметра функции сокращения, мы знаем индекс элемента, который мы в данный момент итерируем, поэтому также заставляем эту функцию работать с массивами, которые не являются числами от 1 до 10.
Вы можете разделить массив и соединить элементы с запятыми и пробелами:
var arr = [1,2,3,4,5,6,7,8,9,10,11]
chunkArr = arr.reduce((acc, item, index) => {
const i = Math.floor(index/2)
if (!acc[i]) {
acc[i] = []
}
acc[i].push(item)
return acc
}, [])
arr = chunkArr.map(arr => arr.join(',')).join(' ')
console.info(arr)
Note, this code works with an odd amount of numbers too.
Может быть больше способов элегантный, но ваш текущий подход, вероятно, не может быть превзойден с точки зрения скорости, длины кода и общей сложности, я думаю