var arr = [{
key: "key1", value: "z"
}, {
key: "key2", value: "u"
}, {
...
}];
Run Code Online (Sandbox Code Playgroud)
如何检查我的key:"key1"
存在是否已存在.如果它不存在,我需要在ma数组中添加密钥.
if(arr.hasOwnProperty("key1")){
arr.unshift({key:"key1", value:"z"});
}
Run Code Online (Sandbox Code Playgroud)
tva*_*son 20
为了方便起见,您应该如此存储数据:
var map = {
"key1": "z",
"key2": "u"
};
Run Code Online (Sandbox Code Playgroud)
然后,您可以进行检查,如果您的密钥与对象上的任何现有属性不冲突,并且您不需要空值,则可以使其更容易.
if (!map["key1"]) {
map["key1"] = "z";
}
Run Code Online (Sandbox Code Playgroud)
如果你真的需要完整的对象(你的实际上只是一个例子),我会将对象存储为键的值,而不仅仅是将对象存储在数组中.也就是说,使它成为一个地图,而不是一个数组.
jAn*_*ndy 10
由于你有一个填充了Objects的数组,你需要这样做:
(ES3)
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'
});
}
Run Code Online (Sandbox Code Playgroud)
filter
如果未通过测试,可以使用ECMAScript 5 方法从数组中删除元素.如果生成的数组没有元素,那么您知道没有任何元素:
if(!arr.filter(function(elem) {
return elem.key === "key1";
}).length) {
arr.push({ key: "key1", value: "z" });
}
Run Code Online (Sandbox Code Playgroud)
如果您希望它在旧版浏览器中工作,则需要使用填充程序来确保Array.prototype.filter
定义.