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"]
分享到:
相关推荐
1. **声明变量**:首先,需要声明两个数组,一个用于存储原始数据(originalArray),另一个用于存储非重复数据(uniqueArray)。还需要声明一个集合对象(uniqueSet)用于临时存储非重复数据。 ```vba Dim ...
3. cvAddWeighted:两个数组的元素级的加权相加运算(alpha 运算) 4. cvAvg:计算数组中所有元素的平均值 5. cvAvgSdv:计算数组中所有元素的绝对值和标准差 6. cvCalcCovarMatrix:计算一组 n 维空间向量的协方差 7....
加减法和乘除法要求两个数组的维数相同,或者一个数组与标量进行运算。乘方运算中,底数和指数可以是标量或数组,但需要注意数组乘方时底数和指数的维数匹配。 关系运算符如`、`>`、`==`、`、`>=`和`~=`用于比较...
该元组中包含两个数组,每个数组中的元素对应于输入数组中非零元素的索引。具体来说,第一个数组中存储的是非零元素的行索引,第二个数组中存储的是非零元素的列索引。这种索引的表示形式使得我们能够快速定位到非零...
- **三元组顺序表**:每个非零元素用一个包含行下标、列下标和值的三元组表示,所有非零元素按行优先顺序存储在一个数组中。 - **行逻辑链接的顺序表**:除了存储非零元素外,还记录每行的非零元素个数,以及每行首...
`find` 函数用于找出数组中非零元素的索引。`exist` 检查变量或文件是否存在,`isa` 判断对象是否属于指定类,`logical` 将数值转换为逻辑值。 最后,MATLAB支持关系运算,例如 `, `>`, `, `>=`, `==`, `~=`,它们...
### 两个字符串中最大相同的子串 #### 问题描述 本题目主要关注的是在两个给定的字符串中找到最长的相同子串。给定的两个字符串分别为 `"qwerabcdtyuiop"` 和 `"xcabcdvbn"`。目标是找出这两个字符串中的最长相同...
1. 应用`unique`函数,如`[~, ~, idx] = unique(A)`,这里的`~`表示忽略返回的两个结果,idx是不同元素在原矩阵中的第一个出现的索引。 2. 计算`length(idx)`,这将是不同元素的个数。 还有一种更高效的方式是结合`...
46. **cvInRange** 和 **cvInRangeS**: 检查数组元素是否在指定范围(两个数组或两个标量)内,返回布尔值数组。 47. **cvInvert**: 求矩阵的逆,用于解线性方程组。 48. **cvMahalonobis**: 计算两个向量的马氏...
- **功能**:比较两个数组中对应元素的值,并根据设定的条件返回比较结果。 - **应用场景**:二值化处理中,用于根据阈值将图像转换为黑白二值图像。 #### 32. cvCmpS:对数组和标量运用设置的比较操作 - **功能**...
栈和数组是数据结构中两个非常重要的概念,栈的应用非常广泛,如括号匹配、表达式求值、递归算法等,而数组是由n个相同类型的数据元素构成的有限序列,每个数据元素被称为数组元素,每个数组元素受到n个线性关系的...
cvInRange:检查一个数组的元素是否在另外两个数组中的值的范围内 可以用于阈值分割图像。 #### 54. cvInRangeS:检查一个数组的元素的值是否在另外两个标量的范围内 同样用于阈值分割,但使用的是标量值。 ###...
24. `cvCmp` / `cvCmpS`:比较两个数组或数组与标量的元素,返回比较结果。 25. `cvConvertScale` / `cvConvert`:转换数组元素类型,可选择缩放因子。 26. `cvCopy`:复制数组的所有元素到另一个数组。 27. `...
26. **cvCmp**、**cvCmpS**: 比较两个数组或数组与标量的元素,根据比较结果生成新的数组。 27. **cvConvertScale**: 转换数组元素类型并可选择性地缩放值。 28. **cvCopy**: 复制一个数组到另一个数组,包括其...
返回的新数组长度会小于或等于n,表示数组中非零元素的数量。 接着,RemoveDuplicates函数用于从已排序的整型数组中删除所有重复的数值。同样地,这个任务可以通过遍历数组完成,比较当前元素与前一个元素是否相同...
在MATLAB中,find函数是一个非常重要的函数,它用于查找数组中非零元素的位置,返回这些元素的线性索引或者行和列的索引。对于不同的输入参数,find函数可以有不同的用法和返回结果。 首先,find函数最基本的形式是...
1. **数组合并**:通过`concat`函数将两个数组合并。先计算合并后数组的总长度,然后创建一个相应大小的新数组,使用`System.arraycopy`方法将原数组的数据复制到新数组中。 2. **数组排序**:利用Java内置的`...
在Java中,删除数组的零元素通常意味着创建一个新的数组,只包含原数组中非零元素。由于Java数组一旦创建,其长度就不可变,因此不能直接删除元素。可以使用ArrayList或其他动态数据结构来实现这个功能,或者使用流...