首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查对象数组中是否存在键

如何检查对象数组中是否存在键
EN

Stack Overflow用户
提问于 2018-01-20 13:56:50
回答 7查看 49.2K关注 0票数 10

我正在试图找出给定的键是否存在于对象数组中。如果值键存在,那么我想返回true else。

我从文本框输入键,然后检查该键是否存在于对象数组中,但无法得到。

这是我尝试过的

代码:

代码语言:javascript
复制
var obj = [{
    "7364234":"hsjd",
    "tom and jerry":"dsjdas",
    "mickey mouse":"kfjskdsad",
    "popeye the sailor man":"alkdsajd",
    "the carribean":"kasjdsjad"
}]

var val = $("input[name='type_ahead_input']").val();

if (obj[val]) {
    console.log('exists');
} else {
    console.log('does not exist');
}

如果我以'the carribean‘的形式提供输入,它存在于对象数组中,即使它输出在控制台中也不存在。

我怎么解决这个问题?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-01-20 13:58:55

您可以使用typeof检查key是否存在。

代码语言:javascript
复制
if (typeof obj[0][val] !== "undefined" ) {
    console.log('exists');
} else {
    console.log('does not exist');
}

注意:有索引0,因为您正在检查的对象是数组obj的元素0。

这里有一把小提琴:

代码语言:javascript
复制
var obj = [{
		"7364234":"hsjd",
		"tom and jerry":"dsjdas",
		"mickey mouse":"kfjskdsad",
		"popeye the sailor man":"alkdsajd",
		"the carribean":"kasjdsjad"
	}];

	if ( typeof obj[0]["the carribean"] !== 'undefined' ) {
		console.log('exists');
	} else {
		console.log('does not exist');
	}

如下所示,您也可以使用obj[0][val] === undefined

您还可以:

代码语言:javascript
复制
var obj = [{
    "7364234":"hsjd",
    "tom and jerry":"dsjdas",
    "mickey mouse":"kfjskdsad",
    "popeye the sailor man":"alkdsajd",
    "the carribean":"kasjdsjad"
}];

var val = "7364234";

if ( val in obj[0] ) {
    console.log('exists');
} else {
    console.log('does not exist');
}
票数 6
EN

Stack Overflow用户

发布于 2018-01-20 14:05:53

您可以筛选对象数组,并只返回具有所需键的对象。如果结果数组的长度大于零,则意味着存在具有该键的元素。

代码语言:javascript
复制
var obj = [{
    "7364234":"hsjd",
    "tom and jerry":"dsjdas",
    "mickey mouse":"kfjskdsad",
    "popeye the sailor man":"alkdsajd",
    "the carribean":"kasjdsjad"
}];

var val = "the carribean";

var exists = obj.filter(function (o) {
  return o.hasOwnProperty(val);
}).length > 0;

if (exists) {
    console.log('exists');
} else {
    console.log('does not exist');
}

如果数组包含具有所需键的对象,则将返回true,而不管其值是undefined还是null

票数 13
EN

Stack Overflow用户

发布于 2022-01-13 17:22:47

我建议使用Array.some()来知道键是否存在,使用Array.find()获取找到的键的值,同时使用一些最近的语法:

代码语言:javascript
复制
let arr = [{"foo": 1}, {"bar":2}];

function isKeyInArray(array, key) { 
  return array.some(obj => obj.hasOwnProperty(key)); 
}

function getValueFromKeyInArray(array, key) { 
  return array.find(obj => obj[key])?.[key]; 
}

console.log(isKeyInArray(arr, "foo"), isKeyInArray(arr, "bar"), isKeyInArray(arr, "baz"));
console.log(getValueFromKeyInArray(arr, "foo"), getValueFromKeyInArray(arr, "bar"), getValueFromKeyInArray(arr, "baz"));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48356971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档