鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 這個(gè)數(shù)組如何去重????

這個(gè)數(shù)組如何去重????

var arr=[{
            source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司", target: "天津海泰科技發(fā)展股份有限公司"
        },]

結(jié)果是

var arr=[{
            source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司", target: "天津海泰科技發(fā)展股份有限公司"
        },]

可以使用underscore.js

回答
編輯回答
嘟尛嘴

var arr =[{

        source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
    },{
        source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
    },{
        source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
    },{
        source: "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司", target: "天津海泰方成投資有限公司"
    },{
        source: "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司", target: "天津海泰科技發(fā)展股份有限公司"
    },]
var arr1=[];
for (var i=0;i<arr.length;i++) {
if (arr.indexOf(arr[i])==-1) {
arr1.push(arr[i])
}
}
2018年8月26日 11:12
編輯回答
念舊

我覺得可以給數(shù)組的每個(gè)對(duì)象元素用JSON.stringify()都轉(zhuǎn)成字符串,去重之后再用JSON.parse()轉(zhuǎn)回來

2017年1月9日 18:57
編輯回答
逗婦乳

set 數(shù)據(jù)結(jié)構(gòu)

let dedupeArr = [...new Set(arr.map(v => JSON.stringify(v)))].map(v => JSON.parse(v));
[
    {
        "source": "天津海泰科技發(fā)展股份有限公司",
        "target": "天津海泰方成投資有限公司"
    },
    {
        "source": "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司",
        "target": "天津海泰方成投資有限公司"
    },
    {
        "source": "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司",
        "target": "天津海泰科技發(fā)展股份有限公司"
    }
]
2018年2月12日 23:21
編輯回答
青瓷

這和你之前那道題有什么不一樣

    _.uniq(arr, true, item => {
      return item.source + item.target
    })
2017年4月9日 23:27
編輯回答
旖襯

const filterArr = arr.map(item => item.source + item.target).map((item, index, array) => {
    return array.indexOf(item) === index
})
const newArr = arr.filter((item, index) => {
    return filterArr[index]
})

console.log(newArr)

就醬

2017年3月16日 06:45
編輯回答
尛曖昧
    function unique(arr) {
        let _arr = [],
            obj = {
                target: {},
                source: {}
            };
        arr.forEach(v => {
            if ((obj.target[v.target] || obj.target[v.target]) && v.source == v.target) {
                _arr.push(v);
                obj.target[v.target] = obj.source[v.source] = 1;
            }
            if (!obj.target[v.target] || !obj.source[v.source]) {
                _arr.push(v);
                obj.target[v.target] = obj.source[v.source] = 1;
            }
        });
        return _arr;
    }

比較丑陋。。。

2017年8月4日 11:16
編輯回答
遲月
var arr=[{
            source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津海泰科技發(fā)展股份有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司", target: "天津海泰方成投資有限公司"
        },{
            source: "天津華苑科技產(chǎn)業(yè)開發(fā)建設(shè)有限公司", target: "天津海泰科技發(fā)展股份有限公司"
        },]
        
const splitWord = '!@@#!'//最好加上分隔符

_.uniq(arr, item => {
  return item.source + splitWord + item.target//加上分隔符避免意外
})
2018年1月11日 09:25