js匹配数组中对象是不是存在一个值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js匹配数组中对象是不是存在一个值相关的知识,希望对你有一定的参考价值。

for(var i =0;i<6;i++)
allarr.push(
materialId:i,
price:i+'10',
num:i
)


selearr.push(
materialId:1,
price:100,
num:100
)
$(selearr).each(function(i, el)
console.log("allarr"+allarr[index].materialId);
console.log("selearr"+selearr[i].materialId);

if(selearr[i].materialId == allarr[0].materialId)//判断是否存在重复的商品ID
selearr[i].num = num;//如果有就覆盖件数
console.log("存在覆盖"+selearr);
else
selearr.push(
materialId:allarr[index].materialId,
price:100,
num:num
)//如果没有就新增一个
console.log("不存在"+selearr);


);
如题这个匹配数组的过程按我的想法是应该覆盖的 但是它第一次匹配没有匹配到两个相等的materialId 就新增了一下 第一次匹配才匹配到 才去覆盖 怎么样 让它匹配完了再去执行我的判断

参考技术A if(selearr[i].materialId == allarr[0].materialId)
allarr也需要循环,不然无法找到重复的内容

追问

可是我的这个是allarr是固定的 固定的也要循环么 而且我刚刚试了 一起循环的话 那他在前面几个不相等的话也还是会新增 直到匹配到相等的才会覆盖

追答if(selearr[i].materialId == allarr[0].materialId)//判断是否存在重复的商品ID
                    selearr[i].num = num;//如果有就覆盖件数
                     console.log("存在覆盖"+selearr);
                 else
                    selearr.push(
                       materialId:allarr[index].materialId,
                       price:100,
                       num:num
                    )//如果没有就新增一个
                     console.log("不存在"+selearr);

                 
改成
var flag = 0;
for(var k=0;i<allarr.length;k++)
   if(selearr[i].materialId == allarr[k].materialId)
      flag = 1;
      break;
    

if(flag==1)
   selearr[i].num = allarr[k].num;//如果有就覆盖件数
   console.log("存在覆盖"+selearr);
else
  selearr.push(
                       materialId:allarr[index].materialId,
                       price:100,
                       num:num
                    )//如果没有就新增一个
                     console.log("不存在"+selearr);

追问

还是不行 我试了 不存在的它也判定存在

本回答被提问者采纳

js 怎么判断一个值是不是是数组

可以使用数组的indexOf()方法,如果返回值为-1则说明不存在,如果返回值为大于-1的整数,则说明存在。例如:
var arr = [1,2,3];
arr.indexOf(1); // 返回0
arr.indexOf(5); // 返回-1
附:返回值为数组中的最靠前元素在数组的位置
参考技术A 本来判断一个对象类型用typeof是最好的,不过对于Array类型是不适用的
可以使用 instanceof操作符
var arrayStr=new Array("1","2","3","4","5");
alert(arrayStr instanceof Array);
当然以上在一个简单的页面布局里面是没有问题的,如果是复杂页面情况,入获取的是frame内部的Array对象,可以用这个函数判断:
function isArray(obj)
return Object.prototype.toString.call(obj) === '[object Array]';
本回答被提问者采纳

以上是关于js匹配数组中对象是不是存在一个值的主要内容,如果未能解决你的问题,请参考以下文章

js判断一个值是不是存在于一个js数组中

js如何查找数组中是不是存在某个值

js 怎么判断一个值是不是是数组

js在数组中查找是不是存在某一个数值

js如何查找数组中是不是存在某个值

js如何查找数组中是不是存在某个值