2015-05-13 9 views
-3

У меня есть этот тип данных JSONКак получить уникальные значения из Json данных без сортировки

enter image description here

Я написал код для устранения повторяющихся записей в JQuery

function GetUniqueTablesCategory(Data) { 
    var UniqueNames = $.unique(Data, function(d) { 
    return d.TableName; 
    }); 
    return UniqueNames; 
} 

Но я получив эту ошибку ниже, кто-нибудь может помочь мне устранить эту проблему.

enter image description here

+1

Он выдает сообщение об ошибке, поскольку объекты не могут быть отсортированы. Метод '$ .unique()' предназначен для использования с массивом DOMElements, см. Https://api.jquery.com/jQuery.unique/ –

+0

Это во время запуска вашего кода? Кажется, что вы не даете массив в качестве аргумента. Вы преобразовали JSON в массив? –

+0

Рори Маккроссан, как я добьюсь этого без использования метода $ .unique(), можете ли вы, пожалуйста, поделиться мной с какой-либо ссылкой. –

ответ

0

Вы можете сделать это с помощью простого цикла:

function GetUniqueTablesCategory(Data) { 
    var UniqueNames = []; 
    Data.forEach(function(value) { 
     if (UniqueNames.indexOf(value.TableName) === -1) { 
      UniqueNames.push(value.TableName); 
     } 
    }); 

    return UniqueNames ; 
} 
0

Если underscore.js является приемлемым, вы можете написать свой метод, как это:

function GetUniqueTablesCategory(data) { 
    return _.uniq(_.map(data, function(d){return d.Name})); 
} 

fiddle

1

попробуйте что-то вроде этого:

$(document).ready(function() { 
 
\t var lookup = {}; 
 
\t var obj = [{'TableName': 'prop1','value5': 'prop3'},{ 'TableName': 'prop1','value5': 'prop3'}, {'TableName': 'prop3','value5': 'prop3'}]; 
 
\t var array=[]; 
 
\t for (var ob, i = 0; ob = obj[i++];) { 
 
\t \t var name = ob.TableName; 
 

 
\t \t if (!(name in lookup)) { 
 
\t \t  lookup[name] = 1; 
 
\t \t  array.push(name); 
 
\t \t } 
 
\t \t } 
 

 
\t alert(JSON.stringify(array)); 
 
\t 
 
\t });//submit click
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

вы можете найти аналогичную нить здесь также. see

Смежные вопросы