Вы также можете просто использовать Array.reduce
и Array.filter
, чтобы получить желаемый результат:
Если вам нужен одномерный массив, вы можете просто распределитьотфильтрованные массивы в новый:
const arr = [ ['☆', 'D', 'a', '☆', '☆', 'r'], ['t', '☆', 'h', '☆', 'H', 'a'], ['c', 'k', '☆', 'e', '☆', 'r'], ['L', '☆', 'o', 'o', '☆', 'p'], ['S', '☆', 'k', 'y', '☆', 'w'], ['a', 'l', '☆', 'k', '☆', '☆'], ['☆', 'e', '☆', '☆', 'r', '☆'] ];
const result = arr.reduce((r,c) => (r.push(...c.filter(x => x !== '☆')), r), [])
console.log(result)
Если вам нужны такие же размеры, но фильтруются те же без spread
:
const arr = [ ['☆', 'D', 'a', '☆', '☆', 'r'], ['t', '☆', 'h', '☆', 'H', 'a'], ['c', 'k', '☆', 'e', '☆', 'r'], ['L', '☆', 'o', 'o', '☆', 'p'], ['S', '☆', 'k', 'y', '☆', 'w'], ['a', 'l', '☆', 'k', '☆', '☆'], ['☆', 'e', '☆', '☆', 'r', '☆'] ];
const result = arr.reduce((r,c) => (r.push(c.filter(x => x !== '☆')), r), [])
console.log(result)
То же самое можно сделать более кратким способом с помощью Array.from
:
const arr = [ ['☆', 'D', 'a', '☆', '☆', 'r'], ['t', '☆', 'h', '☆', 'H', 'a'], ['c', 'k', '☆', 'e', '☆', 'r'], ['L', '☆', 'o', 'o', '☆', 'p'], ['S', '☆', 'k', 'y', '☆', 'w'], ['a', 'l', '☆', 'k', '☆', '☆'], ['☆', 'e', '☆', '☆', 'r', '☆'] ];
const result = Array.from(arr, x => x.filter(y => y != '☆'))
console.log(result)
Если вам нужна строка:
const arr = [ ['☆', 'D', 'a', '☆', '☆', 'r'], ['t', '☆', 'h', '☆', 'H', 'a'], ['c', 'k', '☆', 'e', '☆', 'r'], ['L', '☆', 'o', 'o', '☆', 'p'], ['S', '☆', 'k', 'y', '☆', 'w'], ['a', 'l', '☆', 'k', '☆', '☆'], ['☆', 'e', '☆', '☆', 'r', '☆'] ];
const result = arr.reduce((a,c) => a.concat(c.filter(x => x !== '☆').join('')), "")
console.log(result)