首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在javascript中最简单的数组交集?

在javascript中最简单的数组交集?

提问于 2017-12-26 06:05:23
回答 2关注 0查看 278

什么是最简单的,在JavaScript中实现数组相交的无库代码?我想写intersection([1,2,3], [2,3,4,5])并得到[2, 3]

回答 2

幽幽77

发布于 2017-12-26 06:12:12

.filter 元素的第一个数组也包含在第二个数组中!

array1.filter((n) => array2.includes(n))

梦飞翔758

发布于 2017-12-26 06:09:05

Destructive seems simplest, especially if we can assume the input is sorted:

/* destructively finds the intersection of

* two arrays in a simple fashion.

*

* PARAMS

* a - first array, must already be sorted

* b - second array, must already be sorted

*

* NOTES

* State of input arrays is undefined when

* the function returns. They should be

* (prolly) be dumped.

*

* Should have O(n) operations, where n is

* n = MIN(a.length, b.length)

*/

function intersection_destructive(a, b)

{

var result = [];

while( a.length > 0 && b.length > 0 )

{

if (a[0] < b[0] ){ a.shift(); }

else if (a[0] > b[0] ){ b.shift(); }

else /* they're equal */

{

result.push(a.shift());

b.shift();

}

}

return result;

}

Non-destructive has to be a hair more complicated, since we’ve got to track indices:

/* finds the intersection of

* two arrays in a simple fashion.

*

* PARAMS

* a - first array, must already be sorted

* b - second array, must already be sorted

*

* NOTES

*

* Should have O(n) operations, where n is

* n = MIN(a.length(), b.length())

*/

function intersect_safe(a, b)

{

var ai=0, bi=0;

var result = [];

while( ai < a.length && bi < b.length )

{

if (a[ai] < b[bi] ){ ai++; }

else if (a[ai] > b[bi] ){ bi++; }

else /* they're equal */

{

result.push(a[ai]);

ai++;

bi++;

}

}

return result;

}

和开发者交流更多问题细节吧,去 写回答
相关文章
PHP数组交集的优化
假设我们正在运营一个手机相关的网站,用户可以通过指定若干参数(如操作系统,屏幕分辨率,摄像头像素等等)来筛选自己想要的手机。不过由于手机的参数多,且不同的手机其参数差异大,所以参数表结构通常是纵表(一个参数是一行),而不是横表(一个参数是一列),此时使用若干参数来取结果,通常就是把每个单独参数来取结果,再一起取交集。
LA0WAN9
2021/12/14
3.9K0
两个数组的交集
使用哈希表存储nums1的非重复元素,在查看nums2中是否有对应元素,若有删除哈希表中存的元素。
_kyle
2021/01/04
1.9K0
数组中最大和的子数组
输入一个整型数组,数据元素有正数也有负数,求元素组合成连续子数组之和最大的子数组,要求时间复杂度为O(n)。
阳光岛主
2019/02/19
9160
两个数组的交集
幼稚的方法是根据第一个数组 nums1 迭代并检查每个值是否存在在 nums2 内。如果存在将值添加到输出。这样的方法会导致 O(nxm) 的时间复杂性,其中 n 和 m 是数组的长度。
木子星兮
2020/07/16
1.7K0
两个数组的交集
比较常规的题目,计算两个数组的交集最简单的方式就是遍历数组nums1,对于其中的每个元素,遍历数组nums2判断该元素是否在数组nums2中,如果存在,则将该元素添加到返回值,这样的方式时间复杂度是O(mn),在这里使用排序加双指针的方式,首先对于两个数组分别进行排序,之后分别对于两个数组设立指针进行遍历,对比两个指针所指向的元素,较小的值的指针后移,如果相等则判断是否已经在目标数组中,不在则将其推入数组,之后同时将两个指针后移,最终返回目标数组即可。首先将两个数组分别从小到大进行排序,之后定义目标数组target,以及两个指针i、k与两个数组的长度n1、n2,定义循环,在两个指针分别小于其指向的目标数组的长度下执行循环,如果i指针指向的值小于k指针指向的值,将i指针后移,如果大于则将k指针后移,如果相等则首先得到目标数组的最后一个值的索引,当然在数组为空的情况下会得到-1,在Js中会取得undefined值,在下方比较时不会相等,之后比较最后一个值是否与此时指针指向的值相等,不相等则将值推入数组,这样用来进行去重操作,之后将两个指针分别后移,循环结束后返回目标数组即可。
WindRunnerMax
2022/05/06
1.4K0
两个数组的交集
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
xbhog
2019/10/22
1.8K0
两个数组的交集 II
输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考虑输出结果的顺序。
_kyle
2021/01/05
1.2K0
LeetCode - 两个数组的交集
原题地址:https://leetcode-cn.com/problems/intersection-of-two-arrays/
晓痴
2019/10/08
9990
LeetCode - 两个数组的交集
两个数组的交集II
本题使用哈希表的方式来解答,而Js中对象也是以HashTable进行存储的,便可以直接利用Js对象来实现哈希表,请注意题目要求结果中每个元素出现的次数应与元素在两个数组中出现次数的最小值一致,根据这个要求那么需要在哈希表中记录值出现的次数,首先定义一个HashTable用以记录值出现次数,然后定义目标数组,接着将第一个数组nums1进行遍历,在哈希表中如果没有定义这个key,那么就将这个key的值设置为1,如果已经定义了,那么就将其值自增,然后遍历第二个数组nums2,直接判断在哈希表中是否定义该key,如果定义且其计数值大于0,那么就将哈希表中该key的计数值自减,然后将该key推入数组,循环结束后返回目标数组即可。
WindRunnerMax
2020/08/27
1.3K0
两个数组的交集II
遍历nums1并使用一HashMap存储每个元素出现的次数,接着遍历nums2,若当前元素在在map中出现次数大于0,则说明当前元素为交集记录该元素,将map中该数次数减1。
你的益达
2020/08/05
1.2K0
两个数组的交集 II
就相当于是数学集合求交集,很容易想到的就是双指针扫描比较判断是否存入结果。对于这样的方式就选择先排序再比较。
木瓜煲鸡脚
2020/09/29
1.1K0
两个数组的交集II
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。进阶:
木子星兮
2020/07/16
1K0
【LeetCode】 两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 按照刚才学习的哈希表直接写的 class Solution { public: vector<int> intersection(vector<int>& nums1
韩旭051
2020/06/23
8530
python获取数组中最多的元素
获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的:
周小董
2019/08/14
2.2K0
java计算两个数组的交集_回顾面试题:计算两个数组交集
工作多年,语言经历过C#,JAVA。但是做过的项目大多以业务系统为主,曾经做过一些基础架构的工作,但算法一直在工作中应用的比较少,导致多年之后基本都忘记完了。上一次面试过程中就有一个算法题,我能做对,但是感觉不是最优方案就放弃了。最近想想做为一个程序员,算法还是有必要再补习补习。
用户7886150
2021/04/28
1.4K0
投资中最简单的事
前言 懂得用『延迟满足』去做交易的人,已先胜一筹了 价值投资表述为P0<<V0<Vn,把成长投资表述为P0<V0<<Vn。其中P0是股票今天的价格,V0是公司现在的价值,Vn是公司未来的价值,『<<』代表『远小于』 价值投资的价值支撑主要来自企业现有资产、利润和现金流,更注重公司现在的价格P0是否远小于公司现在的价值V0,这种投资需要分析现在,难度相对较小,大多数人通过学习都能够掌握 选股的要素简化为估值、品质和时机,并且淡化了时机的积极性,于是选股的复杂问题就变成了寻找『便宜的好公司』这个相对简单的问题。
yeedomliu
2021/07/19
8570
349. 两个数组的交集
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/intersection-of-two-arrays 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
lucifer210
2019/09/09
9420
数组交集差集并集
由所有属于集合 A 且属于集合 B 的元素所组成的集合,叫做集合 A 与集合 B 的交集(intersection),记作 A∩B
OBKoro1
2020/10/27
2.1K0
【说站】php数组交集函数
array_intersect()用于两个数组的交集比较,返回一个保留键的数组,这个数组只由第一个数组中出现的值和每个输入数组中出现的值组成。
很酷的站长
2022/11/23
1.4K0
【说站】php数组交集函数
javascript 数组求和_javascript数组的定义
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
2.4K0

相似问题

在JavaScript中合并/拼合数组数组?

2387

在JavaScript中删除数组元素?

2327

如何找到两个列表的交集?

2379

在PHP和Javascript之间传输数组的最佳方法?

2215

如何将简单数组转换为关联数组?

2348
相关问答用户
某公司 | 程序员擅长1个领域
新浪微博 | 高级总监擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档