我想从我的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);
}
但是我无法得到结果。请帮我完成这项工作。如果我的问题不清楚,请告诉我。
更新了原始代码
答案 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