如果直接for循环遍历,直接比较当遍历出来的某一项,判断始终是错误的,因为对象是引用类型,比较的是址而不是值
以下是错误的
var items=[ { message: 'Foo',name: 'sss' }, { message: 'Bar' , name: 'aaa'}, { message: 'Abc' , name: '123'} ] function arr_msg(obj){ for(var i=0;i<items.length;i++){ console.log(items[i]) if(items[i] == obj){ console.log('包含') }else{ console.log('不包含') } } } arr_msg( { message: 'Foo',name: 'sss' })正确的方法,是将其转化为字符串
var items = [ { message: 'Foo',name: 'sss' }, { message: 'Bar' , name: 'aaa'}, { message: 'Abc' , name: '123'} ] var obj = { message: "Foo", name: "sss" } if (JSON.stringify(items).indexOf(JSON.stringify(obj))) { console.log("包含") } else { console.log("不包含") }