2014-07-01 104 views
1

我有點新在這裏..我試圖學習jquery .. 在jquery中我只想要那些有唯一標題的行(即)行1,2和3只...從json數據中刪除具有重複屬性的行

我有表的結構是這樣的:

在SQL Server中我有這樣

QuestionType Title 
Parent1  A 
Parent2  B 
Child1   X 
Child1   X 
Child1   X 

表列,這是我的AJAX功能

$.ajax({ 
    //parameters 
    success: function (response) { 
     result= response.d; 

     if (result.QuestionType == "Child1") { 

      //remove duplicate question.Title 

     //I tried Code like this : if(!$.unique(question.Title)) 
         //{$.Remove()} 
         //this is not working 

     } 

我也試過這個代碼:

   var groups = []; 
       $.each(chick, function (i, item) { 
        $.each(item.Title, function (j, group) { 
         if ($.inArray(group, groups) == -1) { 
          groups.push(group); 
         } 
        }); 
       }); 

這也沒有工作 我已經看到它在使用刪除()和獨特()類似的職位。但我沒有得到它正確的方式。我我也希望如果有一些lambda表達式可以在JQuery中使用像不同的()function..But沒有得到它正確的方式...

任何建議將是有益的

+0

如果可能嘗試在服務器端實現返回,而不是返回大塊數據的不同的數據和在客戶端刪除。 – malkam

+0

我不允許它..我需要刪除json數據 – user3767164

+0

好吧,所以'結果'將是'QuestionType'和'標題'屬性的對象數組? – malkam

回答

1

試試這個

$.ajax({ 
    //parameters 
    success: function (response) { 
     result= response.d; 

var d= {}; 
//array with unique objects 
var u= []; 

$.each(result, function(i, el) { 

    if (!d[el.Title]) { 
     d[el.Title] = true; 
     u.push(el); 
    } 
}); 
} 
}); 
+0

它的工作... thanx ..最短的解決方案 – user3767164

+0

歡迎:) – malkam

-1

jQuery是爲DOM操作而設計的,例如唯一的方法只適用於DOM元素。不要試圖將其用於一切。

爲什麼不使用哈希表實現自定義邏輯,按標題統計出現的次數,然後刪除重複的數據(或將唯一的數據推送到新數組)。

計數的出現:

var occurrences= {}; 

// Count occurrences 
for(var i = 0; i < result.length; i++){ 
    if(occurrences[result[i].Title]){ 
     occurrences[result[i].Title]++; 
    } 
    else{ 
     occurrences[result[i].Title] = 1; 
    } 
} 

然後從原始數組

// Remove the duplicates from the original array 
for(var i = 0; i < result.length; i++){ 
    if(occurrences[result[i].Title] !== 1){ 
     result.splice(i, 1); 
     i--; 
    } 
} 

除去重複者或者推獨特的人到新的數組:

// Push the unique ones to new array 
var unique = []; 
for(var i = 0; i < result.length; i++){ 
    if(occurrences[result[i].Title] === 1){ 
     unique.push(result[i]); 
    } 
} 
0

上下工夫DOM樹中,首先必須將主題插入到DOM中,即在<template> ta g將不會呈現。那麼這將在您的示例表,如果<table id="filter-table">工作:

var items = []; 

$('#filter-table tr td:nth-child(2)').filter(function(i, item) 
{ 
    var exists = -1 !== items.indexOf(item.textContent); 
    items.push(item.textContent); 
    return exists; 
}).parent().remove(); 

運行例如在JSFiddle(用硬編碼DOM)

+0

實際上它是表中的sql ..不在HTML ..從我這邊沒有清除早期..AI學..我已編輯我的帖子 – user3767164