使用视觉力组件从阵列中删除重复项

Removing duplicates from array using on visualforce component

本文关键字:删除 阵列 视觉 组件      更新时间:2023-09-26

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

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

                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);                           
    }

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

更新了原始代码

您的代码有效,您只是忘记删除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 方法:

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

见小提琴