当前位置:首页 » 网页前端 » 前端遍历2个数组取其中相等的值
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端遍历2个数组取其中相等的值

发布时间: 2022-05-14 17:18:27

1. 两个数组取相同元素,能有单层循环的实现么

Arrays.sort(array_1);
Arrays.sort(array_2);
int len = array_1.length
for (int i = 0; i < len; i++)
{
if (Arrays.binarySearch(array_2, array_1[i]) != -1)
print array_1[i];
}

1) 排序
2)遍历任意数组(如果是短的效果最好,我这里没有做判断)
3)把一个数组的元素在另外一个数组中2分查找,找到表示交集。

2. jsp遍历2个数组后比较出相等的部分然后输出

可以用两层for循环

3. js中怎么把数组中重复的数据取出来

需要准备的材料分别是:电脑、html编辑器、浏览器。

1、首先,打开html编辑器,新建html文件,例如:index.html。

4. 有两组数据,怎么样筛选出这两组中相同的数据 JAVA FOR循环

先将两个表分别放入一个EXCEL文档中的二个表中,再向每个表的第1行插入一行,写上二个表的数据标题:比第一个表写上姓名,身份证号,卡号,第二个写上姓名,单位名称,地址。

接下入选择菜单栏中的:数据栏->导入外总数据中的“新建数据库查询”栏目

然后在新建数据库查询窗体中双击选择“新数据源”

在选项中下面有三项,第一项你可以随便写个名称,第二项选择是数据库驱动,在这里你先点击向下框,选择*.XLS文件类型驱动,然后点连接
最后点确定。

接下来你再选择“新建数据查询”,打开刚才你填写的名称,把二个表分别加入到旁边空白区,接着点“下一步”,这时弹出一个对话框,你点确定,这时进入了查询窗口,下面接着的你可以看到你的二个表已在查询窗口里,接下来你就把两个数据标题相同做一个连接,方法是,比如将第一个表姓名标题拖入第二个表的姓名标题上。
这时你就可以看到你要的数据已经显示出来了,接下来的就是反回EXCEL,怎么做呢?选择这个查询窗体菜单栏中的“文件”栏—>将数据返回 Microsoft office EXCEL,接下来回到EXCEL有一个提示,你不管它,直接点确定就够了。

注意,用这个功能时,你的EXCEL必须装有这个查询功能,要不然EXCEL会提醒你需要要安装的。

这个功能,虽然有点复杂,但对付数据比较多而且比较复杂的表很管用,而且不用编公式

哎,打字蛮累的,第一次在网络上回答这么长的东西。

5. for循环嵌套遍历2维数组找出其中某一个值

int a[3][3] {2,4,5,5,0,1,3,6,8}

for(i=0,i++,i<3)
{
for(j=0,j++,j<3)
if a[i][j] == 0
{你得操作}

}

6. java如何在遍历两个数组后,来判断数组的每个元素内容是否一样

  • 思路1: (好理解, 但效率较低,特别是数组较大时)

数组比较每个元素是否相等:

1. 如果数组为null 或者数组的元素个数不相等 , 那么返回false

2. 先把数组排序, 然后逐一比较, 如果有一个元素不相等就返回false. 否则返回true

  • 思路2: (代码稍微多点,但是效率高点)

前面部分和思路1 都一样

只是第2步, 为了省去排序的性能和时间的浪费, 添加两个boolean数组来对应之前的数组,用于标记哪些数字已经使用过了,下次就不要使用了. 虽然代码更多,但是当数组比较长时. 这种方法效率还可以

  • 思路3: (只算一种思路, 也能实现,就不给出具体代码了)

使用集合HashMap(K,V) k存放元素,v存放出现的次数

思路1 参考代码

importjava.util.Arrays;

publicclassArraysTest{
publicstaticvoidmain(String[]args){
int[]ary1={2,4,0,8,6};
int[]ary2={0,6,8,4,2};
int[]ary3={0,0,8,4,2};


booleanb=compareAry(ary1,ary2);
System.out.println(b?"ary1和ary2数组元素都相等":"ary1和ary2数组元素不相等");

booleanb1=compareAry(ary2,ary3);
System.out.println(b1?"ary2和ary3数组元素都相等":"ary2和ary3数组元素不相等");

}

publicstaticbooleancompareAry(int[]ary1,int[]ary2){
//如果数组为null或者数组的元素个数不相等,直接返回false
if(ary1==null||ary2==null||ary1.length!=ary2.length){
returnfalse;
}
if(ary1==ary2){//如果两个数组哈希值一样,那么直接返回true,就不必去循环比较了
returntrue;
}
/*
*先排序,再逐一比较
*/

//为了排序不会影响原始的数组顺序,所以把2个数组复制出来
int[]t1=newint[ary1.length];
System.array(ary1,0,t1,0,ary1.length);

int[]t2=newint[ary2.length];
System.array(ary2,0,t2,0,ary2.length);

//排序
Arrays.sort(t1);
Arrays.sort(t2);
for(inti=0;i<t1.length;i++){
if(t1[i]!=t2[i]){//只要有一个元素不相等,直接返回false
returnfalse;
}
}
returntrue;//前面都没有返回,说明元素都相等,这里就返回true
}
}

思路二

publicclassArraysDemo{
publicstaticvoidmain(String[]args){
int[]ary1={2,4,0,8,6};
int[]ary2={0,6,8,4,2};
int[]ary3={0,0,8,4,2};

booleanb=compareAry(ary1,ary2);
System.out.println(b?"ary1和ary2数组元素都相等":"ary1和ary2数组元素不相等");

booleanb1=compareAry(ary2,ary3);
System.out.println(b1?"ary2和ary3数组元素都相等":"ary2和ary3数组元素不相等");

}

publicstaticbooleancompareAry(int[]ary1,int[]ary2){
//如果数组为null或者数组的元素个数不相等,直接返回false
if(ary1==null||ary2==null||ary1.length!=ary2.length){
returnfalse;
}
if(ary1==ary2){//如果两个数组哈希值一样,那么直接返回true,就不必去循环比较了
returntrue;
}
boolean[]b1=newboolean[ary1.length];
boolean[]b2=newboolean[ary1.length];
for(inti=0;i<b1.length;i++){
booleanflag=false;//flag标记表示是否查找到相同元素,初始状态为false
if(b1[i]){//如果b1[i]为true表示b1[i]已结比找到了相同的元素了,所以跳过该元素
continue;
}
inttemp=ary1[i];
for(intj=0;j<b2.length;j++){
if(b2[j]){//如果b2[j]为true表示b2[j]已结比找到了相同的元素了,所以跳过该元素
continue;
}

if(temp==ary2[j]){//如果找到了相同的元素
flag=true;//找到了相同的元素就设置标记为true
b1[i]=true;//把b1[i]和b2[j]都设置为true
b2[j]=true;
}
}
if(flag==false){//也可以写成if(!flag)表示没有找到相同元素
returnfalse;//直接返回false
}
}

returntrue;//经历上面重重艰难险阻,都没有返回,那么说明两数组的元素内容相同了,返回true
}
}
  • 拓展

注意,关于null这个小问题,多写点
每个人理解题目不一样, 题目要求数组每个元素相同,所以,我觉得数组就不能为null了.但是元素个数可以为0

所以 代码如下

.....
//如果数组为null或者数组的元素个数不相等,直接返回false
if(ary1==null||ary2==null||ary1.length!=ary2.length){
returnfalse;
}

//如果两个数组哈希值一样,那么直接返回true,就不必去循环比较了
if(ary1==ary2){
returntrue;
}
....

当然,有的人认为,两个数组都是null 也可以返回true, 写法如下

......	
//null也是等于null的
if(ary1==ary2){
returntrue;
}
if(ary1!=null&&ary2!=null){
if(ary1.length!=ary2.length){//长度不一样,返回false
returnfalse;
}
}else{
returnfalse;//1个数组是null,1个数组不是null,也返回false
}
.....

以上 ~抛砖引玉!

7. js将两个不同数组相同值作条件遍历可以吗

JS判断一个数组中是否有重复值的三种方法 方法一: //将数组转换成字符串,遍历数组,移除一个元素后若还能找到该元素,那么这个元素就是重复的var s = ary.join(",")+",";for(var i=0;i-1) { alert(

8. C++,找出一个二维数组中相等的值,并输出 如int a[5][10];求高手给出遍历方法

直接给你代码吧!

#include <stdio.h>
int a[3][5] = {
{1,2,3 ,4,5},
{2,4,5, 1,3},
{1,3,5,7,9}
};
struct mark {
int row;
int col;
int tag;
};
struct mark map[3][5];
void find()
{
int i, j, ic, jc;
int ti, tj;
for(i=0; i<3; i++) {
for(j=0; j<5; j++) {
if (map[i][j].row!=-1 || map[i][j].col!=-1) continue;
ti = i;
tj = j;
ic = i;
jc = j+1;
if (jc>=5) {
ic++;
jc=0;
}
goto cmp;
for(ic = i; ic<3; ic++) {
for(jc= 0; jc<5; jc++) {
cmp:
if (a[i][j]== a[ic][jc]) {
map[ic][jc].row =ti;
map[ic][jc].col = tj;
ti = ic;
tj = jc;
}
}
}
}
}
}
int main()
{
int i;
int j;
int ic, jc;
int t1, t2;
for(i=0; i<3;i++) {
for(j=0; j<5; j++) {
map[i][j].row = -1;
map[i][j].col = -1;
}
}
find();
for(i=0; i<3;i++) {
for(j=0; j<5; j++) {
printf("(%d, %d) ", map[i][j].row, map[i][j].col);
}
printf("\n");
}
for(i=2; i>=0; i--) {
for(j=4; j>=0; j--) {
if (map[i][j].tag ==0) {
map[i][j].tag =1;
ic = map[i][j].row;
jc = map[i][j].col;
printf("%d: (%d,%d) ->", a[i][j], i, j);
while(ic != -1 && jc != -1) {
printf("(%d,%d) ->", ic, jc);
map[ic][jc].tag =1;
t1 = map[ic][jc].row;
t2 = map[ic][jc].col;
ic = t1;
jc = t2;
}
printf("end\n");
}
}
}
return 0;
}
运行结果:
(-1, -1) (-1, -1) (-1, -1) (-1, -1) (-1, -1)
(0, 1) (0, 3) (0, 4) (0, 0) (0, 2)
(1, 3) (1, 4) (1, 2) (-1, -1) (-1, -1)
9: (2,4) ->end
7: (2,3) ->end
5: (2,2) ->(1,2) ->(0,4) ->end
3: (2,1) ->(1,4) ->(0,2) ->end
1: (2,0) ->(1,3) ->(0,0) ->end
4: (1,1) ->(0,3) ->end
2: (1,0) ->(0,1) ->end

9. java编程 只遍历一次 将两个int[]数组中相同的元素 打印出来

因为你的3个if语句的正确关系应该是if……else if……的关系。

比如两个数组排序后分别是{1,4}和{1,3},那么你执行第一个if后则 i 和 j 都变成了1,执行完第二个if后则 j 变成了2,那么要执行第三个if的时候 j 就过界了,就会报错

importjava.util.Arrays;


publicclassArray1{
publicstaticvoidmain(String[]args){
int[]array={1,1,3,5,2,3};
int[]array1={2,3,1,4,5,8};
Arrays.sort(array);
Arrays.sort(array1);

inti=0;
intj=0;

while((i<array.length)&&(j<array1.length)){
if(array[i]==array1[j]){
System.out.println(array[i]);
i++;
j++;
}elseif(array[i]>array1[j]){
j++;
}elseif(array[i]<array1[j]){
i++;
}
}
}
}