方法很巧妙 但是要事先知道对应的name或其他属性名称 主键值只适用于已知数据对象进行调用;
var arr1 = [{ name: ‘C30‘ }, { name: ‘C35‘ }, { name: ‘C40‘ }, { name: ‘C45‘ }, { name: ‘C50‘ }, { name: ‘C60‘ }, { name: ‘C55‘}];
//取到strength设定中的列表
var arr2 = [{ name: ‘C30‘ }, { name: ‘C35‘}];
//取到当前合同明细的列表
var temp = []; //临时数组1
var temparray = []; //临时数组2
for (var i = 0; i < arr2.length; i++) {
temp[arr2[i].name] = true; //巧妙地方:把数组B的对象对应的属性值当成临时数组1的键并赋值为真
};
for (var i = 0; i < arr1.length; i++) {
if (!temp[arr1[i].name]) {
temparray.push(arr1[i]); //巧妙地方:同时把数组A对象对应的属性值当成临时数组1的键并判断是否为真,如果不为真说明没重复,就合并到一个新数组里,这样就可以得到一个全新并无重复的数组
};
};
// document.write(temparray.join(",") + "");
console.log(temparray);
// var datalist=[{name:‘C30‘},{name:‘C35‘},{name:‘C40‘},{name:‘C45‘},{name:‘C50‘},{name:‘C60‘},{name:‘C55‘}];
//取到strength设定中的列表
var rowlist=[{name:‘C30‘},{name:‘C35‘}];
//取到当前合同明细的列表
function remove(arrPerson,objPropery,objValue){
return $.grep(arrPerson, function(cur,i){
return cur[objPropery]!=objValue;
});
}
for(var i = 0; i < datalist.length; i++){
//全部的资料中去除已经存在的资料
//可以考虑更换更高效的算法进行去除
for(var j =0;j < rowlist.length; j++) {
if (datalist[i].name==rowlist[j].name){
//去除对应的数组中的资料
//dataList.pop(dataList[i].name);
datalist = remove(datalist,"name",rowlist[j].name);
}
}
}
// a+b 去重 js如何合并两个数组并删除重复的项
var a = [1,2,3,4,5];
var b = [1,2,4,5];
alert(tab(a,b)); // 显示对应的去重后的数组
function tab(arr1,arr2){
var arr = arr1.concat(arr2);
var lastArr = [];
for(var i = 0;i<arr.length;i++)
{
if(! unique(arr[i],lastArr))
{
lastArr.push(arr[i]);
}
}
return lastArr;
}
function unique(n,arr)
{
for(var i=0;i<arr.length;i++)
{
if(n==arr[i]){
return true;
}
}
return false;
}