js数组里的对象处理取值问题

一个数组里若干个对象

[
  {
    id: 1,
    keyValue: "1:1"
    nameValue: "aws:RequestHeader"
    operateValue: "StringEquals"
  },
 {
    id: 2,
    keyValue: "2:2"
    nameValue: "aws:RequestHeader"
    operateValue: "StringEquals"
  },
 {
    id: 3,
    keyValue: "a:a"
    nameValue: "aws:RequestHeader"
    operateValue: "StringNotEquals"
  }
]

当几个对象做比较的时候,operateValue的值如果一样
就将两个operateValue一样的对象里的keyValue 放在一个对象里
那么最终得到的结果就是

  {
    id: 1, // 任意id都可以
    StringEquals: {"1": "1", "2": "2"},
    StringNotEquals: {"a": "a"}
  }

请问怎么处理?谢谢了!!

给个实现方案,看是否符合要求:

data = [
            {
                id: 1,
                keyValue: "1:1",
                nameValue: "aws:RequestHeader",
                operateValue: "StringEquals"
            },
            {
                id: 2,
                keyValue: "2:2",
                nameValue: "aws:RequestHeader",
                operateValue: "StringEquals",
            },
            {
                id: 3,
                keyValue: "a:a",
                nameValue: "aws:RequestHeader",
                operateValue: "StringNotEquals"
            }
        ]
        obj = {
            id : 1,
            StringEquals: {},
            StringNotEquals: {}
        }
        for(let d in data){
            console.log(d)
            let key = data[d].keyValue.split(":")[0];
            let value = data[d].keyValue.split(":")[1];
            if(data[d].operateValue=='StringEquals'){
                obj.StringEquals[key] = value;
            }else{
                obj.StringNotEquals[key] = value;
            }
        }
        console.log(obj);

img


let obj1 = [{
                    id: 1,
                    keyValue: "1:1",
                    nameValue: "aws:RequestHeader",
                    operateValue: "StringEquals",
                },
                {
                    id: 2,
                    keyValue: "2:2",
                    nameValue: "aws:RequestHeader",
                 operateValue: "StringEquals",
                },
                {
                    id: 3,
                    keyValue: "a:a",
                    nameValue: "aws:RequestHeader",
                    operateValue: "StringNotEquals",
                }
            ]
            function newSet(obj) {
                let newObj = {}
                for (let i = 0; i < obj.length; i++) {
                    for (let j = i; j < obj.length; j++) {
                        //判断循环是否第一次进入
                        if (j == i) {
                            newObj[obj[j].operateValue] = {}
                            let arr = obj[j].keyValue.split(':')
                            newObj[obj[j].operateValue][arr[0]] = arr[1]
                        }
                        //判断第二次进入,两次的operateValue是否相等
                        if (obj[i].operateValue == obj[j].operateValue && j != i) {
                            let arr = obj[j].keyValue.split(':')
                            newObj[obj[j].operateValue][arr[0]] = arr[1]
                            obj.splice(j,1)
                        }
                    }
                }
                return newObj
            }
            console.log(newSet(obj1))