JS取出两个数组中的不同或相同元素

1、取出两个数组的不同元素

var arr1 = [0,1,2,3,4,5];
var arr2 = [0,4,6,1,3,9];
function getArrDifference(arr1, arr2) {
        return arr1.concat(arr2).filter(function(v, i, arr) {
            return arr.indexOf(v) === arr.lastIndexOf(v);
        });
    }
    console.log(getArrDifference(arr1,arr2));

 //输出:(4) [2, 5, 6, 9]

(1)concat() 方法:用于连接两个或多个数组。

该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,例:

<script type="text/javascript">

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"

document.write(arr.concat(arr2));
//输出:George、John、Thomas、James、Adrew、Martin
</script>

(2)Array filter() 方法:

创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

语法:array.filter(function(currentValue,index,arr), thisValue)

(3)indexOf() 方法:

可返回某个指定的字符串值在字符串中首次出现的位置。

如果没有找到匹配的字符串则返回 -1。

注意: indexOf() 方法区分大小写。

(4)lastIndexOf() 方法:

可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索。

注意: 该方法将从后向前检索字符串,但返回是从起始位置 (0) 开始计算子字符串最后出现的位置。 看它是否含有字符串。

开始检索的位置在字符串的 start 处或字符串的结尾(没有指定 start 时)。

如果没有找到匹配字符串则返回 -1 。

注意:lastIndexOf() 方法是区分大小写的!

2、取出两个数组的相同元素

var arr1 = [0,1,2,3,4,5];
var arr2 = [0,4,6,1,3,9];
function getArrEqual(arr1, arr2) {
        let newArr = [];
        for (let i = 0; i < arr2.length; i++) {
            for (let j = 0; j < arr1.length; j++) {
                if(arr1[j] === arr2[i]){
                    newArr.push(arr1[j]);
                }
        }
     }
     return newArr;
}
console.log(getArrEqual(arr1, arr2));
 //输出:(4) [0, 4, 1, 3]

原文地址:https://www.cnblogs.com/ycgo/p/10372704.html

时间: 2024-08-28 05:56:19

JS取出两个数组中的不同或相同元素的相关文章

JS比较两个数组是否相等 是否拥有相同元素

Javascript怎么比较两个数组是否相同?JS怎么比较两个数组是否有完全相同的元素?Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,以下两行JS代码都会返回false <script type="text/javascript"> alert([]==[]); alert([]===[]); </script> 要判断JS中的两个数组是否相同,需要先将数组转换为字符串,再作比较.以下两行代码将返回true <

取出两个数组中相同的合约

//从原合约列表中移除登录用户没有的合约 while(i<this.contracts.length-1){ var ctt = this.contracts[i]; var cs = list.filter(function(p){return p.ID==ctt.ID}); if(!cs || cs.length==0){ this.contracts.splice(i,1); } else{ i++; } } //加入原合约列表中没有的 for(var i=0;i<list.length

js如何移除数组中指定索引的项

js如何移除数组中指定索引的项:在Array对象中有给定的函数可以删除数组中指定的元素,虽然非常好用,但是总感觉看不到摸不着的比较别扭,下面就分享一个自定义的删除数组指定索引值元素的函数,希望给大家一个全新的思路.代码实例如下: var array=[]; array[0]="蚂蚁部落一"; array[1]="蚂蚁部落二"; array[2]="蚂蚁部落三"; array[3]="蚂蚁部落四"; array[4]="

【前端小小白的学习之路】----&gt;用JS编写一个函数,返回数组中重复出现过的元素

用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: var arr = [1, 2, 3, 1, 2, 3, 4, 5]; var getRepeat = function (arr) { var obj = {}; for (var i = 0, len = arr.length; i < len; i++) { if (obj[arr[i]] == undefined) { obj[arr[i]] = 1; } else { obj[arr[i]]++; } } for (var

C语言:返回两个数组中第一个元素的指针,并输出这个值

// //  main.c //  Pointer_search // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 bjsxt. All rights reserved. //  要求:通过指针查找,实现比较两个有序数组中的元素,输出两个数组中的第一个相同的元素值. #include <stdio.h> int *searchSameElement(int *a,int *b,int len1,int len2); int ma

取出两个字符串中最大相同的子串

//************************************************************************* //题目要求:4.取出两个字符串中最大相同的子串. //************************************************************************* public class SearchMaxSameString { public static void main(String[] args

有两数组A、B,长度分别为m、n。用不超过m+n的比较次数找到两个数组中的相同元素

今天碰到一道笔试题:有两数组A.B,长度分别为m.n.用不超过m+n的比较次数找到两个数组中的相同元素.当时没做出来,我现在给出C#版本,算是弥补一点遗憾. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SortAB { class Program { static void Main(string[] args) { int[] A = Random

Java比较两个数组中的元素是否相同的最简单方法

呵呵呵,实现Java比较两个数组中的元素是否相同的功能你是怎么做的?看下面最简单方法: import java.util.Arrays; public class Test { /** * Java比较两个数组中的元素是否相同 */ public static void main(String[] args) { String [] array1 = {"1","2","3"}; String [] array2 = {"3"

提取两个数组中不同元素

假设数组: string[] listA ={"1","2","3","4","5"}; string[] listB = {"1","4","5"}; 那么,提取两个数组中不同的元素放到另一个数组中:代码如下: string[] result = listA.Except(listB).Union(listB.Except(listB)).ToA