使用visualforce组件从阵列中删除重复项

时间:2016-03-14 07:22:10

标签: javascript jquery arrays arraylist unique

我想从我的visualforce页面上显示的最终数组中删除重复项。

实际工作代码:(我在数组中得到重复数据)

                function(result, event){

                     //if success
                    if(event.status){

                    var data = {results: []}
                    data.results = result;   
                    query.callback(data);             


                    }
                     else{
                          alert('Invalid Field/Object API Name : '+event.message);
                     }

                 }, 
                  {escape: true}
            );
        }  

示例代码我采取了更改:

function unique(list){
var result = [];
$.each(list, function(i, e) {
    if ($.inArray(e, result) == -1) result.push(e);
  });
  return result;
}

为了结果全力以赴:

     if(event.status){ 
     var result = [];
     var data = {results: []}
     $.each(list, function(i, e) {
     if ($.inArray(e, data.results) == -1)                    data.results.push(e);
   });
    data.results = result;                            
    query.callback( data);                           
    }

但是我无法得到结果。请帮我完成这项工作。如果我的问题不清楚,请告诉我。

更新了原始代码

1 个答案:

答案 0 :(得分:0)

您的代码有效,您只是忘记删除阻止您获得正确结果的data.results = result行:

var result = [];
var data = {results: []}

$.each(list, function(i, e) {
  if ($.inArray(e, data.results) == -1)
    data.results.push(e);
});

// You have to comment the following line, or data.result get reset
// You could also push to result instead of data.results
// in the $.each function above

//data.results = result;                            
// ...                           
console.log(data.results) // => data.results has unique elements!

您也可以使用reduce method

data.results = list.reduce(function(ar,item) {
  if(result.indexOf(item) == -1)
    ar.push(item)
  return ar
}, result)

请参阅fiddle