查找所有重复行并显示不匹配项
Find all duplicate lines and display non matches
在javascript中有一种简单的方法可以做到这一点吗?
arr = ["red","blue","green","red","blue", "yellow"]
output = ["green", "yellow"]
基本上,如果一个值在数组中只显示一次,则输出它。顺序是随机的。
在php中有一些简单的方法可以做到这一点,javascript让我很困惑
需要在至少4000个值上运行此操作,不确定regex或数组函数的速度更快?
谢谢你的帮助。
代码有问题:myarrs值在函数外无法访问,我被困在那里了。文件以其他方式加载,
var txt = '';
var myarr = '';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.status == 0 && xmlhttp.readyState == 4){
txt = xmlhttp.responseText;
myarr = txt.split("'n");
});
//alert(myarr.length);
xmlhttp.open("GET","list.csv",true);
xmlhttp.send();
var map = new Object();
for(var i = 0; i < myarr.length; i++)
{
if(map[myarr[i]] === undefined)
{map[myarr[i]] = 1; }
else
{map[myarr[i]]++; }
}
var result = new Array();
for(var i = 0; i < myarr.length; i++)
{
if(map[myarr[i]] > 1)
{ //do nothing
}
else
{result.push(myarr[i]);}
}
console.debug(result);
document.write(result);
如果唯一元素的顺序无关紧要,您可以将项目存储在对象中并增加计数,就像这个
var arr = ["red", "blue", "green", "red", "blue", "yellow"], obj = {};
arr.forEach(function(currentItem) {
obj[currentItem] = (obj[currentItem] || 0) + 1;
});
然后过滤掉所有值不为1的项目,以获得唯一值
var unique = Object.keys(obj).filter(function(currentItem) {
return obj[currentItem] === 1;
});
console.log(unique);
# [ 'green', 'yellow' ]
注意:如果不使用var
关键字声明变量,它们将成为全局属性。
var txt = '';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
//for local files use status zero not 200
if(xmlhttp.status == 0 && xmlhttp.readyState == 4){
txt = xmlhttp.responseText;
myarr = txt.split("'n");
display = myarr.filter(function(a,b,c){return c.indexOf(a)===c.lastIndexOf(a);});
document.write(display);
// myarr.replace(",", "<br>");
}
};
xmlhttp.open("GET","list.csv",true);
xmlhttp.send();
我唯一不明白的是,为什么页面在处理完整个文件后仍在尝试加载。
相关文章:
- 高库存时期时间与时区不匹配
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- Javascript:图像与单选按钮的值不匹配
- 文本区域(jQuery)的结果不匹配
- 日历显示不正确
- 引导程序下拉列表显示不正确
- 如果状态不匹配,则缩小为丑陋
- Highcharts热图显示不正确
- jQuery自动完成显示不需要的动态html标记
- 始终在 jQuery 自动完成中显示特定选项,即使它与输入不匹配
- 如果项目不匹配,则显示变量
- 在谷歌地图API自动完成中显示不匹配字符串的结果
- Javascript 解析 json 日期时区不匹配会导致显示错误的日期
- 在表单中显示密码不匹配或其强度的错误消息
- 查找所有重复行并显示不匹配项
- javascript密码匹配,如果不匹配显示在innerHTML
- 用Angular过滤器突出显示搜索结果,隐藏不匹配的文本
- 当RowFilter不匹配时显示消息
- 显示“无结果”;如果输入与数组名称不匹配(javascript)
- 当错误消息显示用户名和密码不匹配时,如何通过Cognito验证用户池中的用户?