Member 12559011 Ответов: 2

Как найти дубликаты имен в массиве json и дать предупреждение в jquery


как найти дубликаты в массиве json

Karthik_Mahalingam

что такое формат json,
образец ответа для JSON-данные

Karthik_Mahalingam

это не похоже на json.

Karthik_Mahalingam

ладно,

2 Ответов

Рейтинг:
1

FrostedSyntax

Во-первых, я не знаю, почему копирование и вставка разметки JSON было такой трудной задачей, но что ж, я сделаю все возможное с тем, что вы предоставили. В вашем примере кода Вы используете имя переменной "i" для первого цикла, но затем обратитесь к нему внутри цикла как "i1" так что это вызовет проблемы. Кроме того, это хорошая идея, чтобы использовать метод jQuery parseJSON из соображений совместимости. Основываясь на том, что вы спросили, и приведенных примерах, кажется, что вы хотите проверить optionname значение, чтобы убедиться, что он уникален. Вы можете создать массив имен параметров во время итерации ваших циклов:

var parsed = $.parseJSON(jsonString);
var allNames = [];
for(var i in parsed.menus)
{
   for(var j in parsed.menus[i].menuoptions)
    {
        var name = parsed.menus[i].menuoptions[j].optionname;
       if(!allNames.includes(name))
        {
            allNames.push(parsed.menus[i].menuoptions[j].optionname);
        }
        else
        {
            // duplicate found
        }
    }
}

а затем обрабатывайте дубликаты так, как вы собирались.


Рейтинг:
1

Zafar Sultan

Не могу решить, является ли ваш JSON недействительным или я понятия не имею о JSON? В любом случае, если у вас есть действительный JSON и вы хотите найти уникальные объекты из массива, используйте следующий код:

var optionsList = [{
                "optionName": "Cricket",
                "optionupdate": "new"

            }, {
                "optionName": "Cricket",
                "optionupdate": "new"
            }, {
                "optionName": "Football",
                "optionupdate": "new"
            }, {
                "optionName": "Basketball",
                "optionupdate": "new"
            }, {
                "optionName": "Basketball",
                "optionupdate": "new"
            }, {
                "optionName": "Hockey",
                "optionupdate": "new"
            }];
            var tempArray = [],
            uniqueValueCollection = [];

            $.each(optionsList, function (index, value) {
                if ($.inArray(value.optionName, tempArray) === -1) {//Check if the object is in tempArray or not. If it is not put in in tempArray and also into uniqueValueCollection. If it is there in the tempArray, skip to the next object.
                    tempArray.push(value.optionName);
                    uniqueValueCollection.push(value);
                }
            });
            var result = JSON.stringify(uniqueValueCollection);


Здесь результирующая переменная будет иметь уникальные объекты (основанные на optionName) в виде строки.

Надеюсь, это поможет.