Работа со строками в массиве JavaScript с использованием lodash

0

У меня есть массив JavaScript, который выглядит так:

var arr = ["[Dim1].[Mem1].&[1]",
           "[Dim2].[Mem1].&[2]",
           "[Dim1].[Mem1].&[5]",
           "[Dim2].[Mem1].&[77]",
           "[Dim3].[Mem1].&[1]"
          ]

Мне нужен вывод в этом формате:

{
    [Dim1].[Mem1].&[1], [Dim1].[Mem1].&[5]
},
{
     [Dim2].[Mem1].&[2], [Dim2].[Mem1].&[77]
},
{
     [Dim3].[Mem1].&[1]"]
}

Идея состоит в том, чтобы разделить каждое значение на основе ". &", А затем группировать по результату [0].

Я могу это сделать:

  1. Переверните все элементы массива, а затем разделите их на. &
  2. Создайте другой список, основанный на комбинации [dim]. [Mem]. В нашем случае список будет иметь [Dim3]. [Mem1], [Dim1]. [Mem1], [Dim2]. [Mem1].
  3. Теперь у вас есть два цикла: по одному для каждого элемента в уникальном списке и по одному для каждого элемента в исходном списке и проверьте, является ли исходный список элементов текущим элементом в уникальном списке, а затем формирует строку.

Как я могу достичь этого, используя "lodash" или любую другую библиотеку на основе JS, которая уменьшит код и сделает метод компактным?

  • 0
    Вы пытались использовать любую другую библиотеку? Можете ли вы поделиться с нами тем, что вы пробовали?
Теги:
handlebars.js
lodash

1 ответ

2
Лучший ответ

Довольно буквально, на самом деле:

_.chain(arr)
.invoke("split", ".&")
.groupBy(0)
.map(function(els) {
    return "{\n\t"+ _.invoke(els, "join", ".&").join(", ") + "\n}";
})
.value().join(",\n");
  • 0
    Это здорово !!! Спасибо !!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню