Javascript - 从另一个数组列表中减去数组列表

标签 javascript jquery ecmascript-6

如何使用 .filter() 从另一个数组列表中的数组列表中减去/删除/移除所有重合元素ES6 javascript

Jquery 的解决方案也被接受,但任何解决方案必须与 IE11+ 和 Chrome iO 兼容。避免使用外部库(jquery 除外)。这是我到目前为止尝试过的:

   var originList = [
        {"id":1,"name":"www"},
    	{"id":2, "name":"fff"},
    	{"id":3, "name":"ddd"},
    	{"id":4, "name":"aaaa"},
    	{"id":5, "name":"zzzz"},
    	{"id":6, "name":"Susane"},
        {"id":7,"name":"yyy"}
    ];

    var rest = [
        {"id":1,"name":"www"},
    	{"id":2, "name":"fff"},
    	{"id":3, "name":"ddd"},
        {"id":4, "name":"aaaa"},
        {"id":5, "name":"zzzz"},
    ];

    var newList = [];
    var list = [];

    $.each(originList, function(id,data){
       list = originList.filter(function(obj,a){
		    return data.id !== obj.id ? obj : false;
	    });
    });


    $.each(originList, function(id,data){
       	$.each(rest, function(alli,allData){
		    if(data.id === allData.id) {
  			    newList[id] = data;
		    }
		
	    });
    });

    console.log(list);	//does not exclude id:6
    console.log(newList); //this result is what I want
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

最佳答案

您可以使用过滤查找更新版本

var originList = [
  {"id":1,"name":"www"},
  {"id":2, "name":"fff"},
  {"id":3, "name":"ddd"},
  {"id":4, "name":"aaaa"},
  {"id":5, "name":"zzzz"},
  {"id":6, "name":"Susane"},
  {"id":7,"name":"yyy"}
];
	
var rest = [
  {"id":1,"name":"www"},
  {"id":2, "name":"fff"},
  {"id":3, "name":"ddd"},
  {"id":4, "name":"aaaa"},
  {"id":5, "name":"zzzz"},
];
	
var newList = originList.filter( o => rest.find( x => o.id === x.id ) );
	
console.log( newList );

文档:.filter() , .find()

<小时/>

对于旧版本,可以使用forif

var originList = [
  {"id":1,"name":"www"},
  {"id":2, "name":"fff"},
  {"id":3, "name":"ddd"},
  {"id":4, "name":"aaaa"},
  {"id":5, "name":"zzzz"},
  {"id":6, "name":"Susane"},
  {"id":7,"name":"yyy"}
];
	
var rest = [
  {"id":1,"name":"www"},
  {"id":2, "name":"fff"},
  {"id":3, "name":"ddd"},
  {"id":4, "name":"aaaa"},
  {"id":5, "name":"zzzz"},
];

var newList = [];
for (var i = 0; i < originList.length; i++) {
  for (var x = 0; x < rest.length; x++) {
    if ( rest[x].id === originList[i].id ) {
        newList.push( originList[i] );
        break;
    }
  }
}

console.log( newList );

关于Javascript - 从另一个数组列表中减去数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49073623/

相关文章:

jquery - 将图像旋转 360 度

javascript - 如何执行作为参数传递的 JQuery 匿名函数?

javascript - Webpack:如何在一个全局变量下隐藏导出函数/变量?

javascript - 将状态定义为类中的变量(或属性)是否正确?

Javascript DOM 无效指针错误

javascript - 在 nuxt 中公开静态资源

javascript - 在 d3 时间轴的开头添加额外的刻度

javascript - jQuery 支持常量吗?

javascript - jQuery 附加 Handlebars

javascript - 箭头函数 "this"绑定(bind)在 React 组件中不起作用