Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查数组javascript中是否存在值_Javascript - Fatal编程技术网

检查数组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);
    }
}