javascript - 根据两个键(即 JavaScript 中的 from 和 to)从两个对象数组中查找唯一值

标签 javascript jquery arrays

我有两个对象数组,如下所示:

    var b = [{"from":2,"to":7,"id":1},{"from":3,"to":9,"id":2},{"from":2,"to":7,"id":3}]
    var c = [{"from":3,"to":9,"id":2,"style":""},{"from":2,"to":7,"id":3,"style":"dash-line"},{"from":4,"to":2,"id":4,"style":"dash-line"},{"from":2,"to":4,"id":5,"style":""},{"from":4,"to":2,"id":6,"style":"dash-line"}];

我想要的是上面两个对象的数组,它具有唯一的“from”,“to”和“style”应该是“”(空白)或未定义。具有唯一的ID。

    output = [{"from":2,"to":7,"id":0},{"from":3,"to":9,"id":1},{"from":2,"to":4,"id":6,"style":""}]

我能够得到它,如下面的代码所示,但我觉得代码可以优化,或者可以有更好的方法来做到这一点。请帮忙......谢谢。

  var b = [{"from":2,"to":7,"id":1},{"from":3,"to":9,"id":2},{"from":2,"to":7,"id":3}]
    var c = [{"from":3,"to":9,"id":2,"style":""},{"from":2,"to":7,"id":3,"style":"dash-line"},{"from":4,"to":2,"id":4,"style":"dash-line"},{"from":2,"to":4,"id":5,"style":""},{"from":4,"to":2,"id":6,"style":"dash-line"}];
    var a = b.concat(c);
findUniQue(a);

function findUniQue(a){
    var tempArr =[];
    for(var i =0;i<a.length;i++){
        if(a[i].style == undefined || a[i].style != 'dash-line' ){
            var count = 0;
            if(tempArr.length>0){
             for(var j =0;j<tempArr.length;j++){
                if((a[i].from == tempArr[j].from)&&(a[i].to == tempArr[j].to)){
                    count--;
                    break;  
                }
                else{
                    count++;
                }
                if(count == tempArr.length){
                    a[i].id = i;
                    tempArr.push(a[i]);
                }
                }
             }
             else{
                a[i].id = i;
                tempArr.push(a[i]);
             }
        }
    }
    console.dir(tempArr);
}

最佳答案

function removeduplicate(){
    var array = [{id:5},{id:8},{id:9},{id:10},{id:5},{id:8}];
    var size = array.length;
    for (var i = 0; i < size - 1; i++) {
        for (var j = i + 1; j < size; j++) {
            if (array[j].id !== array[i].id)
                continue;
            array.splice(j,1);
            j--;
            size--;
        } // for j
    } // for i
    console.log(array);
}

关于javascript - 根据两个键(即 JavaScript 中的 from 和 to)从两个对象数组中查找唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719238/

相关文章:

javascript - 从另一个 HTML 页面检索 cookie - 基于链接的选项选择

javascript - 按需使用 Vue 组件 - [Vue warn] : Cannot find element

javascript - 如何在 React.js 中使用获取的数据过滤数组?

Javascript + onresize 事件

jquery - 为什么日期选择器不起作用?

javascript - Angular 1.5 在表格单元格中显示数组的多个元素

javascript - JS/JQuery 中数组的分段

jquery - 为什么 gt() 和 lt() 只是 jQuery 选择器,而 eq() 也是一个方法?

JavaScript 添加数组元素

Perl:无法将 "on-the-fly"数组传递给子