`
zhouyrt
  • 浏览: 1163818 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

返回两个数组中非相同的元素

阅读更多

csdn上又有个网友提这样的问题,看来这个问题很多时候都会碰到。如下

var a=['1','2','3','4']
var b=['1','2']
如何比较才能得到数组c=['3','4']

 

基本的算法就是挨个比较两个数组的元素,把不同的跳出来单独放到一个数组里,最后返回该数组。

 

其实数组元素如果是基本类型(Number,String,Boolean)的很好比较,但如果是对象类型就麻烦一些,js对象的比较见http://snandy.iteye.com/blogs/269609

 

Array.prototype.contains = function(obj) {
	var boo = false;
	for(var i=0;i<this.length;i++) {
		if(typeof obj == "object") {
			if(this[i].equals(obj)) {
				boo = true;
				break;
		    }						
		}else {
			if(this[i] == obj)  {
			       boo = true;
			       break;				
			}
		}			
	}
	return boo;
}
function filter(a1, a2) {
	var myAry = [];
	var fun = function(item,ary) {
		var boo = false;
		for(var i=0;i<ary.length;i++) {
			if(item==ary[i]) {
			      boo = true;
			      break;
			}
		}
		return boo;								
	}	
	for(var i=0;i<a1.length;i++) {
		if(!a2.contains(a1[i]))
		myAry.push(a1[i]);					
	}			
	return myAry;
}

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

var c = filter(a,b);
alert(c);//输出["3","4"]
 

 

 

 

2
1
分享到:
评论
2 楼 kingsmalltwo 2011-09-01  
不错~ 顶!!!
1 楼 ShiningRay 2008-12-03  
看看关于集合的算法吧

相关推荐

    VBA示例函数之 求人不如自已动手 统计数组中非重复数据个数

    1. **声明变量**:首先,需要声明两个数组,一个用于存储原始数据(originalArray),另一个用于存储非重复数据(uniqueArray)。还需要声明一个集合对象(uniqueSet)用于临时存储非重复数据。 ```vba Dim ...

    opencv各函数功能

    3. cvAddWeighted:两个数组的元素级的加权相加运算(alpha 运算) 4. cvAvg:计算数组中所有元素的平均值 5. cvAvgSdv:计算数组中所有元素的绝对值和标准差 6. cvCalcCovarMatrix:计算一组 n 维空间向量的协方差 7....

    ch03数组.pdf

    加减法和乘除法要求两个数组的维数相同,或者一个数组与标量进行运算。乘方运算中,底数和指数可以是标量或数组,但需要注意数组乘方时底数和指数的维数匹配。 关系运算符如`、`&gt;`、`==`、`、`&gt;=`和`~=`用于比较...

    浅谈python numpy中nonzero()的用法

    该元组中包含两个数组,每个数组中的元素对应于输入数组中非零元素的索引。具体来说,第一个数组中存储的是非零元素的行索引,第二个数组中存储的是非零元素的列索引。这种索引的表示形式使得我们能够快速定位到非零...

    数组和广义表

    - **三元组顺序表**:每个非零元素用一个包含行下标、列下标和值的三元组表示,所有非零元素按行优先顺序存储在一个数组中。 - **行逻辑链接的顺序表**:除了存储非零元素外,还记录每行的非零元素个数,以及每行首...

    MATLAB数组运算.ppt

    `find` 函数用于找出数组中非零元素的索引。`exist` 检查变量或文件是否存在,`isa` 判断对象是否属于指定类,`logical` 将数值转换为逻辑值。 最后,MATLAB支持关系运算,例如 `, `&gt;`, `, `&gt;=`, `==`, `~=`,它们...

    两个字符串中最大相同的子串。 "qwerabcdtyuiop" "xcabcdvbn"

    ### 两个字符串中最大相同的子串 #### 问题描述 本题目主要关注的是在两个给定的字符串中找到最长的相同子串。给定的两个字符串分别为 `"qwerabcdtyuiop"` 和 `"xcabcdvbn"`。目标是找出这两个字符串中的最长相同...

    matlab 计算矩阵中不同元素个数的函数

    1. 应用`unique`函数,如`[~, ~, idx] = unique(A)`,这里的`~`表示忽略返回的两个结果,idx是不同元素在原矩阵中的第一个出现的索引。 2. 计算`length(idx)`,这将是不同元素的个数。 还有一种更高效的方式是结合`...

    常用OpenCV函数

    46. **cvInRange** 和 **cvInRangeS**: 检查数组元素是否在指定范围(两个数组或两个标量)内,返回布尔值数组。 47. **cvInvert**: 求矩阵的逆,用于解线性方程组。 48. **cvMahalonobis**: 计算两个向量的马氏...

    图像处理和图像识别中常用的OpenCV函数

    - **功能**:比较两个数组中对应元素的值,并根据设定的条件返回比较结果。 - **应用场景**:二值化处理中,用于根据阈值将图像转换为黑白二值图像。 #### 32. cvCmpS:对数组和标量运用设置的比较操作 - **功能**...

    数据结构--栈和数组--思维导图.pdf

    栈和数组是数据结构中两个非常重要的概念,栈的应用非常广泛,如括号匹配、表达式求值、递归算法等,而数组是由n个相同类型的数据元素构成的有限序列,每个数据元素被称为数组元素,每个数组元素受到n个线性关系的...

    图像处理和图像识别中常用的OpenCV函数(中文注释) 219个函数说明

    cvInRange:检查一个数组的元素是否在另外两个数组中的值的范围内 可以用于阈值分割图像。 #### 54. cvInRangeS:检查一个数组的元素的值是否在另外两个标量的范围内 同样用于阈值分割,但使用的是标量值。 ###...

    opencv常用函数

    24. `cvCmp` / `cvCmpS`:比较两个数组或数组与标量的元素,返回比较结果。 25. `cvConvertScale` / `cvConvert`:转换数组元素类型,可选择缩放因子。 26. `cvCopy`:复制数组的所有元素到另一个数组。 27. `...

    常用OpenCV函数查询

    26. **cvCmp**、**cvCmpS**: 比较两个数组或数组与标量的元素,根据比较结果生成新的数组。 27. **cvConvertScale**: 转换数组元素类型并可选择性地缩放值。 28. **cvCopy**: 复制一个数组到另一个数组,包括其...

    专题四-个人课后上机1

    返回的新数组长度会小于或等于n,表示数组中非零元素的数量。 接着,RemoveDuplicates函数用于从已排序的整型数组中删除所有重复的数值。同样地,这个任务可以通过遍历数组完成,比较当前元素与前一个元素是否相同...

    matlab2014a参考页与help中文翻译 之find

    在MATLAB中,find函数是一个非常重要的函数,它用于查找数组中非零元素的位置,返回这些元素的线性索引或者行和列的索引。对于不同的输入参数,find函数可以有不同的用法和返回结果。 首先,find函数最基本的形式是...

    java基础习题

    1. **数组合并**:通过`concat`函数将两个数组合并。先计算合并后数组的总长度,然后创建一个相应大小的新数组,使用`System.arraycopy`方法将原数组的数据复制到新数组中。 2. **数组排序**:利用Java内置的`...

    蓝桥杯试题3_java蓝桥杯试题_

    在Java中,删除数组的零元素通常意味着创建一个新的数组,只包含原数组中非零元素。由于Java数组一旦创建,其长度就不可变,因此不能直接删除元素。可以使用ArrayList或其他动态数据结构来实现这个功能,或者使用流...

Global site tag (gtag.js) - Google Analytics