У меня есть список, содержащий многоуровневые вложенные списки. В каждом списке могут быть строки и экземпляры других типов.Как объединить все строки во вложенном списке?
E.g.
var list = [ 'a', 'w', ['e', ['f', new Object(), 'f'], 'g'], 't', 'e'];
Я хочу написать функцию (скажет compress
), чтобы объединить строки со своими братьями и сестрами, и оставить другие экземпляры типа нетронутыми, и, наконец, получить список, который не имеет вложенный список.
компресс (список) { // как? }
И результат compress(list)
будет:
['awef', new Object(), 'fgte']
Это быстрый и прозрачный раствор для него?
Что, что 'list..add' делать? Выполнение 'add', но возврат' list'? Все еще не хватает какого-то функционального оператора приложения, такого как Haskell, и XQuery знают их ... 'List compress => flatten. concat; 'было бы действительно мило. –
Да. Это метод каскада. Выражение оценивает список, поэтому функция возвращает список, но позволяет добавлять вызываемые в одном выражении. Мне действительно нравится ваш ответ лучше, то есть он более ясен. Я просто играл, чтобы узнать, как я могу получить код. –
Сладкий, я все время отвращался от этого «возвратного списка». Я определенно предпочитаю ваш «сгладить», хотя «concat» было немного трудно читать. –