- 一维数组去掉重复值
方法一:
array_unique() :去除数组中的重复项,只适用于一维数组
方法二:
array_flip() 返回一个反转后的 array,例如 array 中的键名变成了值,而 array 中的值成了键名。当键名重复时,后面的会覆盖掉前面的,从而达到去重的目的。
方法三:
function array_remove_value($arr){
$new_arr = [];
foreach ($arr as $value) {
if (!in_array($value,$new_arr)){
$new_arr[] = $value;
}
}
return $new_arr;
}
- 二维数组去掉重复值
方法一:
//二维数组去掉重复值
public function array_unique_2d($array2D){
foreach ($array2D as $v){
$v=join(',',$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
$temp[]=$v;
}
$temp=array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v){
$temp[$k]=explode(',',$v); //再将拆开的数组重新组装
}
return $temp;
}
方法二:
/**
* @param [type] $array2D [二维数组]
* @param [type] $keys [全部键名]
* @return [type] [去重后的数组]
*/
function array_unique_fb($array2D=[], $keys=[]){
$temp = [];
$temp2 = [];
foreach ($array2D as $k=>$v){
$v=join(',',$v);
$temp[$k]=$v;
}
$temp=array_unique($temp);
foreach ($temp as $k => $v){
$array=explode(',',$v);
foreach($keys as $index => $key)
{
$temp2[$k][$key] = $array[$index];
}
}
return $temp2;
}
方法三:
var arr_list = [];
var newArr = [];
for (var i = 0; i < that.addForm.redoList.length; i++) {
arr_list.push(that.addForm.redoList[i]['cause_parent']);
newArr = arr_list.filter(function(item,index){
return arr_list.indexOf(item) === index;
});
}
if(arr_list.length != newArr.length){
window.alert("责任部门不能重复选择!");
return;
}
二维数组按某个键判断是否重复去重
/**
* @param [type] $arr [description]
* @param [type] $key [description]
* @return [type] [description]
*/
function array_unset_tt($arr=[],$key=null){
//建立一个目标数组
$res = array();
foreach ($arr as $value) {
//查看有没有重复项
if(isset($res[$value[$key]])){
unset($value[$key]);
}else{
$res[$value[$key]] = $value;
}
}
return $res;
}
JS二维数组去重:
function Deduplicate() {
let tmp = [
[1, 1, 2],
[1, 1, 2],
[3, 4, 5]
];
let hash = {};
let res = [];
for (let i = 0; i < tmp.length; i++) {
if (!hash[tmp[i]]) {
res.push(tmp[i]);
hash[tmp[i]] = true;
}
}
return res;
}