Javascript находит, какие объекты имеют повторяющиеся свойства в массиве

У меня есть такой массив:

          "order": [
            {  "item_name": " Corn Pie",
                "item_status": "ready",
                "extras": ["French Fries","Bacon"]
            },
            {  "item_name": " Corn Pie",
                "item_status": "ready",
                "extras": ["French Fries","Bacon"]
            },
            {  "item_name": " Corn Pie",
                "item_status": "ready",
                "extras": ["French Fries","Bacon"]
            },
            {  "item_name": " Corn Pie",
                "item_status": "ready",
                "extras": ["French Fries","Bacon"]
            },
            {  "item_name": " Corn Pie",
                "item_status": "ready",
                "extras": []
            },
            {  "item_name": " Corn Pie",
                "item_status": "ready",
                "extras": ["French Fries"]
            },
            {  "item_name": " Corn Pie",
                "item_status": "waiting",
                "extras": ["French Fries","Bacon"]
            }]

и поэтому мне нужно найти, какие объекты дублированный .. для дублирования все 3 свойства должны быть одинаковыми .. Я могу добиться этого, выполнив следующие действия:

order = order.filter((item, index, self) =>
        index === self.findIndex((t) => (
            (t.item_name === item.item_name) && (t.item_status === item.item_status) && (t.extras.length === item.extras.length)
        ))
    )

этот код работает как шарм ... Я могу понять, почему и как он работает, но мне нужно знать, какие элементы были отфильтрованы и сколько раз это было.

Любые идеи? заранее спасибо .. Я взял тот фильтр из поста пост-фильтр

от автора Эйдриана, я хотел бы оставить комментарий, чтобы задать вопрос прямо там, но у меня нет репутации, чтобы комментировать ... так что я здесь ...

Чтобы быть более ясным, мне нужно знать, какие элементы где дублирован и сколько раз он был отфильтрован, например этот элемент

 {  "item_name": " Corn Pie",
            "item_status": "ready",
            "extras": ["French Fries","Bacon"]
        }

будет отфильтрован 4 раза, мне нужно знать эту информацию

Какие ожидаемые результаты? Не очень понятно, о чем вы спрашиваете

charlietfl 23.04.2018 00:56

результатом должен быть массив, содержащий не дублированные элементы, дублирующий "статус" дается bu, имеющий все одинаковые свойства, например, одно и то же имя, такой же статус и одинаковую длину в дополнениях ... Я уже могу это сделать с фильтром, но мне нужно знать, какие элементы были отфильтрованы и сколько раз они были отфильтрованы

Miguel Sedek 23.04.2018 01:01

Хорошо ... ты все это сказал. Каковы ожидаемые результаты для информации о дубликатах и ​​как ее использовать?

charlietfl 23.04.2018 01:03

Для этого лучше всего переписать JS, чтобы он не использовал однострочные стрелочные функции. Дайте себе немного больше места для выполнения другой логики

Denno 23.04.2018 01:10

Вы можете запустить тот же фильтр и просто инвертировать его

Lux 23.04.2018 01:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот решение пещерного человека (arr - ваш массив без ключа "порядок"):

arr.map(function(d,i){return JSON.stringify(d)})//stringfy the object
.map(function(d,i,a){//we will have multiple arrays with identical content, select the latest one
    return i === a.lastIndexOf(d) && a.filter(function(dd,ii){
        return d === dd
    })
}).filter(function(d){//filter false
    return d;
}).map(function(d,i){//map back to the same object with additional repeated key
    var retValue = JSON.parse(d[0]);
    retValue.repeated = d.length;
    return retValue;    
});

Вы получите это:

"[
    {
        "item_name": " Corn Pie",
        "item_status": "ready",
        "extras": [
            "French Fries",
            "Bacon"
        ],
        "repeated": 4
    },
    {
        "item_name": " Corn Pie",
        "item_status": "ready",
        "extras": [],
        "repeated": 1
    },
    {
        "item_name": " Corn Pie",
        "item_status": "ready",
        "extras": [
            "French Fries"
        ],
        "repeated": 1
    },
    {
        "item_name": " Corn Pie",
        "item_status": "waiting",
        "extras": [
            "French Fries",
            "Bacon"
        ],
        "repeated": 1
    }
]"

спасибо, человек, это решает мою проблему, я вроде новичок в javascript, не знаю, что случилось с голосованием против ... Я думаю, что я довольно ясно понимал свою проблему и предоставил достаточно информации ... предполагаю, что тролли будут ненавидеть везде все время

Miguel Sedek 23.04.2018 02:04

Я понимаю тебя, чувак. Я рад, что ты получил то, что хотел. Удачи в работе.

ibrahim tanyalcin 23.04.2018 02:33

Другие вопросы по теме