https://pastebin.com/s3NsNzNL
Мне нужно объединить json выше примерно так:
[
{
columns : ["Color","Model","Miles"],
combination : ["Black","Subaru","More than 1000"],
count : 1
},
{
columns : ["Color","Model","Miles"],
combination : ["Black","Subaru","More than 2000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Black","Subaru", "More than 3000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Black","Toyota", "More than 1000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Black","Toyota", "More than 2000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Black","Toyota", "More than 3000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Yellow","Subaru", "More than 1000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Yellow","Subaru", "More than 2000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Yellow","Subaru", "More than 3000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Yellow","Toyota", "More than 1000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Yellow","Toyota", "More than 2000"],
count : 2
},
{
columns : ["Color","Model","Miles"],
combination : ["Yellow","Toyota", "More than 3000"],
count : 2
}
]
Пример изображения
создать функцию, которая будет принимать несколько имен полей и объединяться в нечто вроде выше.
например.
as per example above is based on this selection
fields= ["Color","Model","Miles"] <-- this should be flexible, it could be ["Color","Miles"]
function aggregate(fields,json){
//Algorithm starts?
fields.forEach()
json.forEach() ??
..............
}
Кто-нибудь знает эффективный способ решить эту проблему? Любая помощь будет высоко ценится! scala или javascript в порядке
отредактировано: если кто-то, возможно, все еще не понимает вопрос, я, в основном, хочу собрать список объектов JSON, как указано выше, с использованием функции, которая принимает список полей, например, ["Color", "Model"] (может быть больше 2), также с 'Count' этой комбинации.
Основой c logi c каждого агрегированного объекта является
если выбраны поля Цвет и Модель
val combination = jsonObjectList
.filter( e => (e.name == "Color" || e.name == "Model") && (e.value.contains("Black") || e.value.contains("Toyota") ))
new AggregatedObj(fields= Seq("Color","Model"), combination = Seq("Black","Toyota"), count = combination.length)
без использования сторонних библиотек
фиктивные данные = https://pastebin.com/s3NsNzNL
Пример изображения