js 将一个集合中相同的数据合到一起存入另一个集合中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 将一个集合中相同的数据合到一起存入另一个集合中相关的知识,希望对你有一定的参考价值。

如题 例如:集合中有这么一组数据 1,1,1,1,2,2,2,3,3,3,3,1,1,1,1,合完后放入另一个集合中的数据为1,2,3,1。 顺序不能改变。小弟新人一个,求大神帮帮忙!

参考技术A var list = [1,1,1,2,2,3,3,3,3,3,1,1,2,4,4,4];
var last = -1;
var result = [];
for(var i = 0;i<list.length;i++)
if(i==0&&last==-1)
last = list[i]
result.push(list[i]);
continue;

var temp = list[i];
if(temp!=last)
last = temp;
result.push(list[i]);


console.log(result);追问

大神牛批! 我再问一哈,如果合并之前的集合数据是[num:1,id:222,num:1,id:222,num:1,id:333,num:1,id:333],合并之后[num:2,id:222,num:2,id:333],就是按照id看是否相同如果相同把num加到一起 id不变 和到一起

追答

//第二个问题就换思路了
var list = [num:1,id:222,num:1,id:222,num:1,id:333,num:1,id:333,num:5,id:222,num:1,id:444];
var last = -1;
var lastNum = 0;
var result = [];
while(list.length>0)
for(var i = 0;i<list.length;i++)
if(i==0&&last==-1)
last = list[i].id;
lastNum = list[i].num;
list.splice(i,1);
i--;
continue;

var temp = list[i];
if(temp.id==last)
lastNum=lastNum+ temp.num;
list.splice(i,1);
i--;


result.push( num:lastNum,id:last );
last = -1;
lastNum = 0;

console.log(result);

追问

是这样的大神,按照你给的list,其实想要的结果是[num:2,id:222,num:2,id:333,num:5,id:222,num:1,id:444],还是顺序不变,这样的话可以实现吗?

追答

//百度说我字数太多。只复制了循环部分

for(var i = 0;i<list.length;i++)
if(i+1 == list.length)
if(last==-1)
alert("逻辑上不可能进入此处");
else
var temp = list[i];
if(temp.id==last)
lastNum=lastNum+ temp.num;
result.push( num:lastNum,id:last );
else if(temp.id!=last)
result.push( num:lastNum,id:last );
result.push( num:temp.num,id:temp.id );

break;

else
var temp = list[i];
if(last==-1)
last = temp.id;
lastNum = temp.num;
continue;
else
if(temp.id==last)
lastNum=lastNum+ temp.num;
else if(temp.id!=last)
result.push( num:lastNum,id:last );
last = temp.id;
lastNum = temp.num;



追问

大神666,大神牛批,方便加一个QQ吗?

本回答被提问者采纳

将 3 个数据集合并在一起

【中文标题】将 3 个数据集合并在一起【英文标题】:Merging 3 datasets together 【发布时间】:2020-05-07 02:11:42 【问题描述】:

我需要将 3 个数据集 (csv.) 合并在一起以制作动态图表。 它们都以国家为列,以年份为行。

其他两个数据集看起来相同,除了一个是人口,另一个是收入。我试着环顾四周,看看我能找到什么来得到我想要的数据,但似乎找不到任何东西。

我尝试使用 pd.concat,但它只是一个接一个地列出,而不是在单独的列中。

合并所有 3 个数据集以准备使用 pd.concat 制作动态图 mc_data = pd.concat([df2, pop_data3, income_data3], sort = True)

任何形式的帮助将不胜感激

编辑:我按照建议使用了代码,但是我得到了一堆不应该存在的 NaN 值

mc_data = pd.concat([df2, pop_data3, income_data3], axis = 1, keys = ['df2', 'pop_data3', 'income_data3'])

EDIT2:当我在它们上运行 .info 和 .index 时,我得到了这些结果。可能与数据类型有关吗?还是列条目?

【问题讨论】:

【参考方案1】:

来自this answer:

您可以使用concat 来做到这一点(keys 参数将创建分层列索引):

pd.concat([df2, pop_data3, income_data3], axis=1, keys=['df2', 'pop_data3', 'income_data3'])

【讨论】:

这有效,但我现在有不应该存在的 NaN 值 这意味着数据集不包含那些年份的值。例如df2 没有年份 1970 -1974,income_data3 没有年份 2011-2015。 确实如此,当我在合并之前查看 df2 时,它具有 1970 年至 2015 年每年每个国家/地区的值 打印什么df2.info()df2.indexincome_data3.info()income_data3.index 我在原始问题的输出中添加了一个屏幕截图,它可能是影响它的数据类型吗?还是列?

以上是关于js 将一个集合中相同的数据合到一起存入另一个集合中的主要内容,如果未能解决你的问题,请参考以下文章

表的集合操作

将 C# 集合复制到另一个集合 [关闭]

初学java 想知道java map集合循环存入数据

Laravel 5.7:基于多个键检测集合中的重复项(完成)但如何将重复项移动到另一个集合?

看我在Map<String, String>集合中,存入Integer类型数据

看我在Map<String, String>集合中,存入Integer类型数据