首页 新闻 会员 周边 捐助

有五组数据 其中有两组里面的索引都相等 我怎么吧这两组索引相同的数组提炼出来

0
悬赏园豆:5 [已解决问题] 解决于 2018-04-18 17:37

有五组数据 其中有两组里面的索引都相等 我怎么吧这两组索引相同的数组提炼出来

例如下面的这个例子

xuanPhoto的主页 xuanPhoto | 菜鸟二级 | 园豆:212
提问于:2018-04-12 23:48
< >
分享
最佳答案
1

提供一个思路(Hash结构):

1.首先遍历查看key相同的数据有几种,进行记录

  即遍历的时候对 demo01进行记数,有相同进行加一

      这样既可以知道哪个key是有多个的

2.然后再遍历,与刚才上一步的记录做对比

    当这个key元素相同的时候,按照相同进行输出

    当这个key元素不同的时候,按照不同进行输出

 

以上,希望对你有帮助

收获园豆:5
Mr_伍先生 | 初学一级 |园豆:6 | 2018-04-13 09:04

是这么想的 通过键值对的比较 一样则输出 但结果不尽人意 

xuanPhoto | 园豆:212 (菜鸟二级) | 2018-04-13 14:56

@model-zachary: 
可能我的思路没有表达清楚:

首先,你使用一个map集合记录每一个key的个数信息
然后,再进行遍历,当发现这个key记录里面的个数大于1的时候,按照相同进行输出

否则按照不同进行输出;

 

总体而言需要遍历两次!!!

 

理论上应该是可行的。。。

 

Mr_伍先生 | 园豆:6 (初学一级) | 2018-04-13 15:05

@Mr_伍先生:  我现在便利处全部的这个demo1 重复和不重复的都有  然后呢 我还做了去重操作 现在 再把 去重的和没去重的作比较 如果相同则输出 现在全部输出了 arr 而不是 输出相同的 啊 好郁闷

xuanPhoto | 园豆:212 (菜鸟二级) | 2018-04-13 15:12

@model-zachary: 没有懂你的需求?

Mr_伍先生 | 园豆:6 (初学一级) | 2018-04-13 15:18

@Mr_伍先生: 可以写一个实现这个的js代码么 用 foreach 或者map 实现

xuanPhoto | 园豆:212 (菜鸟二级) | 2018-04-14 00:46

@model-zachary: 

<html>
<body>

<script type="text/javascript">
let arr =[
{demo1:123,demo2:"第一行"},
{demo1:123,demo2:"第二行"},
{demo1:345,demo2:"第三行"},
{demo1:345,demo2:"第四行"},
{demo1:456,demo2:"第伍行"}
]
var map = {};
for(var i=0;i<arr.length;i++){
if(map.hasOwnProperty(arr[i].demo1)){
var x = map[arr[i].demo1];
x = x+1;
map[arr[i].demo1]=x;
}else{
map[arr[i].demo1]=1;
}
}
console.log(JSON.stringify(map))

for(var j=0;j<arr.length;j++){
if(map[arr[j].demo1]>1){
console.log("aaa:"+arr[j].demo1);
}else{
console.log("bbb:"+arr[j].demo1);
}
}

 

</script>
</body>
</html>

 

 

Mr_伍先生 | 园豆:6 (初学一级) | 2018-04-16 22:50

@model-zachary: 简单的实现了一下,不知道能够解决题主的问题,主要看思路。

(因为不是专业前端开发,不要介意。。。)

Mr_伍先生 | 园豆:6 (初学一级) | 2018-04-16 22:51

@Mr_伍先生: 刚看到谢谢 我看下 谢谢您的耐心 谢谢

xuanPhoto | 园豆:212 (菜鸟二级) | 2018-04-18 17:36

@model-zachary: 如果能够对你解决问题,有帮助的话,那就行。。。

Mr_伍先生 | 园豆:6 (初学一级) | 2018-04-18 17:45
其他回答(1)
0
var arr = [{
            demo1:'123',
            demo2:'第一行'
        },{
            demo1:'123',
            demo2:'第二行'
        },{
            demo1:'456',
            demo2:'第一行'
        }]

    var json = [];
    var keyMap = {};
    for (var i = 0; i < arr.length; i++) {
        var elemKey = arr[i].demo1;
        if (elemKey in keyMap) {
            json[keyMap[elemKey]].value.push(arr[i]);
        } else {
            json.push({
                "demo1": arr[i].demo1,
                "value": [arr[i]]
            });
            keyMap[elemKey] = json.length - 1;
        }
    }
    console.log(json);

json里的value就是你需要的数据

青青子衿619 | 园豆:300 (菜鸟二级) | 2018-04-28 16:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册