检查数组javascript中是否存在值
我有这些数据检查数组javascript中是否存在值,javascript,Javascript,我有这些数据 var selectedValue = []; selectedValue.push({0:'Data A'}); selectedValue.push({1:'Data B'}); 我想检查我的新数据是否已经存在于该数组中。我正在尝试使用includes() 然后我尝试另一种方法 function inArrayCheck(val) { if (Object.values(selectedValue).indexOf(val) > -1)
var selectedValue = [];
selectedValue.push({0:'Data A'});
selectedValue.push({1:'Data B'});
我想检查我的新数据是否已经存在于该数组中。我正在尝试使用includes()
然后我尝试另一种方法
function inArrayCheck(val) {
if (Object.values(selectedValue).indexOf(val) > -1) {
console.log(val);
}
}
它们都返回
false
当我输入数据A时,您试图从数组中的对象中查找值。您可以这样尝试:
var selectedValue=[];//这是一个数组
selectedValue.push({0:'Data'});//这里将对象推送到数组中
selectedValue.push({1:'datab'});//要在以后找到值,您需要在对象内部找到它!
//以上三行也可以这样写,并且是相同的
//var selectedvalue1=[{0:'dataa'},{1:'datab'}];
功能检查(val){
selectedValue.forEach(函数(元素){
if(Object.values(element).indexOf(val)>-1){
log('找到的值:'+val);
}
});
}
inaraycheck(“数据A”)代码>对象将不相等,除非它们具有相同的引用,即使它们具有相同的键/值对。您可以在使用JSON将对象转换为字符串后进行比较。stringify
功能有限,例如对象中元素的顺序和字符串的大小写:
var selectedValue=[];
selectedValue.push({0:'Data'});
selectedValue.push({1:'datab'});
功能检查(val){
返回selectedValue.some(obj=>JSON.stringify(obj)==JSON.stringify(val))
}
log(inaraycheck({0:'dataa'}))
您忘记检查每个值。您还可以使用find()函数检查数组中是否有符合您条件的值。这里的selectedValue是什么?为什么要将值包装到对象中?为什么不干脆selectedValue.push('Data A')
?如果您有一个对象数组,那么您应该在所有对象中使用相同的属性名称,而不是不同的属性。例如,selectedValue.push({key:0,value:Data A})
这是否回答了您的问题?
function inArrayCheck(val) {
if (Object.values(selectedValue).indexOf(val) > -1) {
console.log(val);
}
}