搜索
javascript - 过滤数组子集
某草草
某草草 2017-05-19 10:42:41
[JavaScript讨论组]

var a = [1,2,3,4,5,6];
var b = [2,3,6];
数组b 是 数组a 的一个子集,a中去掉包含b的元素,最优的方案有哪些?

某草草
某草草

全部回复(4)
某草草

https://lodash.com/docs/4.17....

巴扎黑
function diff(a1, a2) {
  return a1.concat(a2).filter(function (val, index, arr) {
    return arr.indexOf(val) === arr.lastIndexOf(val);
  });
}
function diff2(a1, a2) {
  return a1.filter(val => {
    return a2.indexOf(val) === -1;
  })
}
高洛峰

使用原生方式解决

使用Array的filter方法就可以解决你的问题,具体实现很简单,别人也有回答。

借助第三方库解决

如果你不介意引用第三方库,那么推荐你引入lodash,这个库包含了大量处理数组的方法,如果你对数组操作场景比较多,强烈推荐使用。

它有个函数专门处理这个问题,叫做difference. 当然了,前面有个同学说用without也可以,只不过用起来没有difference方便。

下面代码中的"_"是引入lodash后一个默认的对象,所有lodash定义的方法都在它下面,有点像引入jQuery后使用的"$"

var a = [1,2,3,4,5,6];
var b = [2,3,6];

var result = _.difference(a, b); // result=[1,4,5]
迷茫

何必用loadash,直接用数组的filter方法就行了:

var a = [1,2,3,4,5,6];
var b = [2,3,6];

var ans = a.filter((n) => !b.includes(n));
console.log(ans);    //[1, 4, 5];
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号