分享几个数组方法
去重:
//数组去重 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) 编辑 收藏 举报