Javascript 如何检查对象数组中是否存在我的密钥
如何检查我的Javascript 如何检查对象数组中是否存在我的密钥,javascript,Javascript,如何检查我的键:“key1”是否已存在。如果它不存在,我需要在ma数组中添加密钥 var arr = [{ key: "key1", value: "z" }, { key: "key2", value: "u" }, { ... }]; 为了方便起见,您应该这样存储数据: if(arr.hasOwnProperty("key1")){ arr.unshift({key:"key1", value:"z"}); } 然后,您可以进行检查,如果您的键与对象上的任何
键:“key1”
是否已存在。如果它不存在,我需要在ma数组中添加密钥
var arr = [{
key: "key1", value: "z"
}, {
key: "key2", value: "u"
}, {
...
}];
为了方便起见,您应该这样存储数据:
if(arr.hasOwnProperty("key1")){
arr.unshift({key:"key1", value:"z"});
}
然后,您可以进行检查,如果您的键与对象上的任何现有属性都不冲突,并且不需要空值,则可以简化检查
var map = {
"key1": "z",
"key2": "u"
};
如果您确实需要完整的对象(您的对象毕竟只是一个示例),我会将该对象存储为键的值,而不仅仅是将对象存储在数组中。也就是说,让它成为一个映射,而不是一个数组。var-key;
if (!map["key1"]) {
map["key1"] = "z";
}
对于(变量i=0;i
由于您有一个充满对象的数组,您需要像这样做:
(ES3)
函数查找(名称){
对于(变量i=0,len=arr.length;i
如果元素未通过测试,可以使用ECMAScript 5方法从数组中删除元素。如果生成的数组没有元素,则您知道您的值中没有元素:
function lookup( name ) {
for(var i = 0, len = arr.length; i < len; i++) {
if( arr[ i ].key === name )
return true;
}
return false;
}
if( !lookup( 'key1' ) ) {
arr.push({
key: 'key1',
value: 'z'
});
}
如果希望它在较旧的浏览器中工作,则需要使用垫片来确保定义了
Array.prototype.filter
。您可以检查数组和对象,查看数组键或对象属性是否存在。它非常有用,用于检查这两种类型的方法相同
if(!arr.filter(function(elem) {
return elem.key === "key1";
}).length) {
arr.push({ key: "key1", value: "z" });
}
作为对象
下面是@jAndy公认答案的两个更明确的版本 我为自己制作了第一个版本,以便更好地理解逻辑,并添加了以下内容: 如果该键确实存在,则增加匹配项的count属性 对象,否则创建计数为1的新对象 在第二个版本中,我意识到我更希望我的
arrayOfObjects
变量是一个对象
,这样以后我可以专门针对值,而不是在数组上循环,直到找到匹配项,然后获得相关的对象值。因此,该版本使用对象而不是对象数组
版本01-对象数组
//基于:https://stackoverflow.com/a/9177103/1063287
//对象的原始数组
变量arrayofObjects=[{
id:“CY01”,
计数:1
},
{
id:“CY33”,
计数:5
},
{
id:“CY55”,
计数:8
}
];
//在界面中显示数组
$(.before”).text(JSON.stringify(arrayofObjects));
//定义查找函数(必须有权访问arrayofObjects)
函数查找(键到键检查){
//对于对象数组中的每个对象
对于(变量i=0;i
正文{
字体系列:arial;
字号:14px
}
输入现有或不存在的密钥,然后单击“运行”
如果存在,则增加计数,否则创建计数为1的新对象
跑
对象数组-之前:
检查:
对象数组-之后:
if(!arr.filter(function(elem) {
return elem.key === "key1";
}).length) {
arr.push({ key: "key1", value: "z" });
}
/**
* Check if an array key or object property exists
* @key - what value to check for
* @search - an array or object to check in
*/
function key_exists(key, search) {
if (!search || (search.constructor !== Array && search.constructor !== Object)) {
return false;
}
for (var i = 0; i < search.length; i++) {
if (search[i] === key) {
return true;
}
}
return key in search;
}
key_exists('jared', ['jared', 'williams']); //= true
key_exists('jared', {'jared': 'williams'}); //= true