Javascript 通过按下值检查数组中是否存在键

Javascript 通过按下值检查数组中是否存在键,javascript,Javascript,有人能告诉我为什么每次我想检查数组中的密钥是否可用时,我得到的结果是false?请参见下面的示例 var obj=new Array(); 对象推送({名称:“test1”,值:“10”}); 对象推送({name:“test2”,value:“40”}); //obj中的var inobject=“name;”/结果:错误 //obj中的var inoobject=“test1;”/结果:错误 //对象中的var inoobject=“10”;//结果:错误 obj中的var inoobje

有人能告诉我为什么每次我想检查数组中的密钥是否可用时,我得到的结果是
false
?请参见下面的示例

var obj=new Array();
对象推送({名称:“test1”,值:“10”});
对象推送({name:“test2”,value:“40”});
//obj中的var inobject=“name;”/结果:错误
//obj中的var inoobject=“test1;”/结果:错误
//对象中的var inoobject=“10”;//结果:错误
obj中的var inoobject=“value”;
$('body')。追加(“”+inobject+”

您正在检查数组中是否存在“值”,而不是数组中的元素。要正确检查数组元素中是否存在“value”,您需要寻址
obj[i]
。像这样:

var obj = new Array();
obj.push({ name: "test1", value: "10" });
obj.push({ name: "test2", value: "40" });
var inobject = "value" in obj[0];
console.log(inobject);
您正在检查数组中是否存在“值”,而不是数组中的元素。要正确检查数组元素中是否存在“value”,您需要寻址
obj[i]
。像这样:

var obj = new Array();
obj.push({ name: "test1", value: "10" });
obj.push({ name: "test2", value: "40" });
var inobject = "value" in obj[0];
console.log(inobject);
由于obj中的
“value”不是检查数组中是否存在值的方式,而且您有一个对象数组,这意味着您必须根据数组的元素而不是数组本身来检查值的存在性,因此您可以这样做:

var obj=new Array();
对象推送({名称:“test1”,值:“10”});
对象推送({name:“test2”,value:“40”});
var inobject=obj.some((a)=>a中的“值”);
console.log(inoobject);//如果为true,则表示它在那里
,因为obj中的“值”不是检查数组中是否存在值的方式,并且您有一个对象数组,这意味着您必须根据数组的元素而不是数组本身来检查是否存在,这是您的操作方式:

var obj=new Array();
对象推送({名称:“test1”,值:“10”});
对象推送({name:“test2”,value:“40”});
var inobject=obj.some((a)=>a中的“值”);

console.log(inoobject);//如果为true,则表示它在那里
问题在于,您试图检查该键是否存在于数组中,而不是数组中的对象上,因此正如预期的那样,这些键不匹配,因为它们在数组中不存在

如果要检查数组中的任何对象是否具有特定的键,则可以通过简单的循环执行此操作:

var found = false;
var search = "value";
for(var i = 0; i < obj.length; i++){
    if(search in obj[i]){
        found = true;
        break;
    }
}
var-found=false;
var search=“value”;
对于(变量i=0;i

或者将其拆分为一个漂亮的函数:

function doesKeyExist(var arr, var key){
    for(var i = 0; i < obj.length; i++){
        if(key in obj[i])
             return true;
    }
    return false;
}

var inobject = doesKeyExist(obj, "value");
$('body').append("<p>"+ inobject + "</p>");
函数doesKeyExist(var-arr,var-key){
对于(变量i=0;i”;

如果要查找属性的,可以执行以下操作:

function doesValueExistForKey(var arr, var key, var search){
    for(var i = 0; i < obj.length; i++){
        if(key in obj[i] && obj[i][key] === search)
             return true;
    }
    return false;
}

var inobject = doesValueExistForKey(obj, "name", "test1");
$('body').append("<p>"+ inobject + "</p>");
函数doesValueExistForKey(var-arr、var-key、var-search){
对于(变量i=0;i”;

问题在于,您正在尝试检查该键是否存在于数组中,而不是数组中的对象上,因此正如预期的那样,这些键不匹配,因为它们在数组中不存在

如果要检查数组中的任何对象是否具有特定的键,则可以通过简单的循环执行此操作:

var found = false;
var search = "value";
for(var i = 0; i < obj.length; i++){
    if(search in obj[i]){
        found = true;
        break;
    }
}
var-found=false;
var search=“value”;
对于(变量i=0;i

或者将其拆分为一个漂亮的函数:

function doesKeyExist(var arr, var key){
    for(var i = 0; i < obj.length; i++){
        if(key in obj[i])
             return true;
    }
    return false;
}

var inobject = doesKeyExist(obj, "value");
$('body').append("<p>"+ inobject + "</p>");
函数doesKeyExist(var-arr,var-key){
对于(变量i=0;i”;

如果要查找属性的,可以执行以下操作:

function doesValueExistForKey(var arr, var key, var search){
    for(var i = 0; i < obj.length; i++){
        if(key in obj[i] && obj[i][key] === search)
             return true;
    }
    return false;
}

var inobject = doesValueExistForKey(obj, "name", "test1");
$('body').append("<p>"+ inobject + "</p>");
函数doesValueExistForKey(var-arr、var-key、var-search){
对于(变量i=0;i”;
in操作员检查钥匙。您的阵列具有以下键:

0,1
所以

正确。

in操作员检查钥匙。您的阵列具有以下键:

0,1
所以


为true。

您只能搜索数组的键或类似以下的值:

var obj=new Array(),
el1,el2
push(el1={name:“test1”,value:“10”});
推送(el2={name:“test2”,value:“40”});
$('body')。追加(“检查键1:”+(obj中的1)+“

”; $('body')。追加(“检查元素el1:”+(obj.indexOf(el1)>=0)+“


您只能搜索数组的键或类似以下的值:

var obj=new Array(),
el1,el2
push(el1={name:“test1”,value:“10”});
推送(el2={name:“test2”,value:“40”});
$('body')。追加(“检查键1:”+(obj中的1)+“

”; $('body')。追加(“检查元素el1:”+(obj.indexOf(el1)>=0)+“


如果要查找集合中任何对象(第一级)中存在的键,则不要执行此操作 obj中的“值”你可以做
obj.some(e=>“value”在o中)

//名称是obj,但实际上是一个数组
var obj=新数组();
对象推送({名称:“test1”,值:“10”});
对象推送({name:“test2”,value:“40”});
函数checkForKey(列表,键){
返回列表。一些(e=>输入e);
}
log('Key[name]:',checkForKey(obj,'name');
log('Key[age]:',checkForKey(obj,'age');

log('Key[value]:',checkForKey(obj,'value')如果要查找集合中任何对象(第一级)中存在的键,则不要执行此操作