数组里边根据键值进行合并处理

<script>
var examViewList = [{
"examItemIds" : 221,
"timePoint" : "20"
}, {
"examItemIds" : 240,
"timePoint" : "40"
}, {
"examItemIds" : 221,
"timePoint" : "30"
}, {
"examItemIds" : 220,
"timePoint" : "30"
}, {
"examItemIds" : 222,
"timePoint" : "40"
}, {
"examItemIds" : 222,
"timePoint" : "40"
}
];
/**
*
* 参数:obj 传入对象
* mainKey 主键
* key 需要合并的键值名称
* flag 合并是否需要去重
*/
function objSwitch(obj, mainKey, key,flag) {

if( typeof Array.indexOf !== ‘function‘ ){
Array.prototype.indexOf = function(args){
var index = -1;
for(var i=0,l=this.length; i<l; i++){
if(this[i] === args){
index = i;
break;
}
}
return index;
}
}

var rObj = []; //返回的数组
var rObjHasMainKey = []; //返回数组包含的主键值
var i = obj.length;

while (obj[--i]){
var rIndex = rObjHasMainKey.indexOf(obj[i][mainKey]);

if(rIndex == -1){
var tempObj={};
rObjHasMainKey.push(obj[i][mainKey]);
tempObj[mainKey] = obj[i][mainKey];
tempObj[key] = [obj[i][key]];
rObj.push(tempObj);
}else{//如果已经存在的话,直接写入到返回的obj里
if(flag==true ){
if(rObj[rIndex][key].indexOf(obj[i][key])==-1){
rObj[rIndex][key].push(obj[i][key]);
}
}else{
rObj[rIndex][key].push(obj[i][key]);
}
}
}
console.log(rObj);
}

objSwitch(examViewList,‘timePoint‘,‘examItemIds‘)

</script>

时间: 2024-10-03 22:38:51

数组里边根据键值进行合并处理的相关文章

php合并数组并保留键值的方法

php合并数组并保留键值的方法例子1,数组使用字符串键名,相同的键名会被后面的覆盖<pre><?php$arr1 = array('name'=>'fdipzone');$arr2 = array('name'=>'terry'); $result = array_merge($arr1, $arr2); print_r($result);?></pre>输出:<pre>Array( [name] => terry)</pre>

实现对多维数组按照某个键值排序的两种方法(array_multisort和array_sort)

实现对多维数组按照某个键值排序的两种解决方法(array_multisort和array_sort): 第一种:array_multisort()函数对多个数组或多维数组进行排序. //对数组$hotcat按照count键值大小降序进行排序: $hotcat =array( array('1501'=>array('catid'=>'1546','catname'=>'续梦PHP 一级','count'=>'588')), array('1501'=>array('catid

PHP如何根据数组中的键值进行排序

主要是使用PHP的排序函数,asort()和arsort(). 为了减少代码的耦合性,我们将根据数组中的键值进行排序封装成一个函数 1 <?php 2 $array = array( 3 array('name'=>'aa','price'=>1050), 4 array('name'=>'bb','price'=>4300), 5 array('name'=>'cc','price'=>3100), 6 array('name'=>'dd','price'

PHP编程实现多维数组按照某个键值排序的方法

1.array_multisort()函数对多个数组或多维数组进行排序. //对数组$hotcat按照count键值大小降序进行排序: $hotcat =array(  array('1501'=>array('catid'=>'1546','catname'=>'数组排序 一级','count'=>'588')),  array('1501'=>array('catid'=>'1546','catname'=>'数组排序二级','count'=>'588'

php 二位数组按某个键值排序

$arr=[ array( 'name'=>'小坏龙', 'age'=>28 ), array( 'name'=>'小坏龙2', 'age'=>14 ), array( 'name'=>'小坏龙3', 'age'=>59 ), array( 'name'=>'小坏龙4', 'age'=>23 ), array( 'name'=>'小坏龙5', 'age'=>23 ), array( 'name'=>'小坏龙6', 'age'=>21

php之PDOStatement::execute数组参数带有键值会出错

当预处理的SQL语句是用问号占位符时,如果是用数组传参的,数组里不要带有键值,否则无法执行SQL. 出错的代码如下: $test = new PDODB(); $param=["d"=>"2020-1-13","e"=>2,"f"=>2,"g"=>2]; $sql1 = "insert into hk49x7_bns (killmode,killmodecode,fensh

NSMutableDictionary 用set方法初始化的字典 里边的键值不可修改

NSMutableDictionary 对象 用set方法初始化的键值不可修改,应为 NSMutableDictionary的set方法只是继承了NSDictionary的set方法,并没有重写该方法. 想要修改字典内容必须用NSMutableDictionary的alloc方法初始化.

php数组根据某键值,把相同键值的合并最终生成一个新的二维数组

要处理的PHP数组: $infos = array(         array(         'gid' => 36,         'name' => '高二佳木斯',                  'start_time' => '2015-08-28 00:00:00',                    'pic' => '2015/08/438488a00b3219929282e3652061c2e3.png'                       

PHP二位数组/多维数组 根据某个键值排序

$arr[$i]['FirstName'] = $d_first_name;$arr[$i]['MiddleName'] = $d_middle_name;$arr[$i]['LastName'] = $d_last_name;$arr[$i]['Company'] = $d_company;$arr[$i]['ProcessDate'] = $auth_table->getUpdatedAt(); foreach ($arr as $key => $val) { //get ProcessD