分享几个数组方法

去重:

//数组去重
function unique(arr) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = i + 1; j < arr.length; j++) {
            if (arr[i] == arr[j]) {//第一个等同于第二个,splice方法删除第二个
                arr.splice(j, 1);
                j--;
            }
        }
    }
    return arr;
}

删除:

/*删除数组中的某一个对象
_arr:数组
_obj:需删除的对象
*/
function removeAaary(_arr, _obj) {
    var length = _arr.length;
    //深拷贝
   var arr = $.extend(true, [], _arr);
    for (var i = 0; i < length; i++) {
        if (arr[i].id == _obj.id && arr[i].perType == _obj.perType) {
             _arr.splice(i, 1); //删除下标为i的元素
        }
    }
     return _arr;
}

数组 json 转 对象:

//数组json  转 对象
function arrayToObject(array, _key) {
    if (_key.indexOf("&") > -1) {
        _key = _key.split("&");
    }
    var obj = {};
    for (var i = 0; i < array.length; i++) {

        if (typeof _key == "object") {
            var k0 = array[i][_key[0]],
                k1 = array[i][_key[1]];
            obj[k0 + '_' + k1] = array[i]; //替换  可用于去重
            // if(obj[array[i][k0 + '_' + k1]]){
            //     delete obj[array[i][k0 + '_' + k1]] //删除  可用于查找删除
            // }
        } else {
            obj[array[i][_key]] = array[i];
        }
    }
    return obj;
}
根据参数_key比较两组json, 从第一组中删除第二组:
/*//根据参数_key比较两组json, 从第一组中删除第二组
* @allData  母json
* @hasData  子json
* @_key     需比较的key属性名称, 最多可以写两个, 用'&'符号连接 (不填默认取"id")
* */
function diffDataJson(allData, hasData, _key) {
    _key = _key || "id";
    var obj1 = arrayToObject(allData, _key);
    var obj2 = arrayToObject(hasData, _key);
    console.log(obj1, obj2);
    for (var k in obj2) {
        if (obj1[k]) {
            delete obj1[k];
        }
    }
    console.log(obj1);
    return Object.values(obj1);
}

 

 

posted on 2021-08-20 11:05  fox_charon  阅读(48)  评论(0编辑  收藏  举报

导航