今天测试人员给小编提了一个需求,产品添加的时候实现追加的功能,想到了json数组合并的问题,然后就想到了要去重的问题,在此方法中使用到了js提供的indexOf方法解决,话不多说,直接上代码:
var json = grid.getSelectedRows();
var jsonParent = Ext.util.JSON.decode(jsonParentStr);
var tempArr = [];
for(var i=0;i<jsonParent.length;i++){
var temp = jsonParent[i];
tempArr.push(temp['productId']);
}
for(var i=0;i<json.length;i++){
var temp = json[i];
if(tempArr.indexOf(temp['productId'])==-1){
tempArr.push(temp['productId']);
jsonParent.push(temp);
}
}
但是有一个问题,IE8不支持indexOf方法,所以我们需要手动添加上indexOf方法,即在使用该方法之前,判断Array是否存在indexOf方法,不存在就添加上
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}