我正在处理对象,我想从中移除特定地址的值。 我需要元素的位置,并希望从对象中删除它
这是代码:
var matches = {
"users-email": "email",
"users-activated": "activated",
"users-created_at": "created_at",
"users-registration_page": "registration_page",
"profiles-firstname": "firstname"
} ;
var option = 'firstname';
var if_in = $.inArray(option, matches );
//console.log(matches)
if( if_in !== -1 )
{
matches.splice(if_in, 1);
}
$.each(matches , function(i,v){
$('.test').append(v+'<br>');
});
在我的对象$.inArray()
中没有工作它返回-1。
有人可以帮我找到这个问题。
答案 0 :(得分:4)
更正了按值删除的答案。您可以使用$ .each迭代对象并删除匹配值。
$.each (matches, function(key, value) {
if (value == option) {
delete matches[key];
return false; //deleted matching value
}
});
按值删除多个键
var keysToDelete = [];
for (var key in matches) {
if (matches[key] == option) {
keysToDelete.push(key);
}
};
for (var i = 0; i < keysToDelete.length; i++ ) {
if (matches.hasOwnProperty(keysToDelete[i])) {
delete matches[keysToDelete[i]];
}
}
答案 1 :(得分:4)
如果要检查您的选项是否与值匹配,最简单的方法是遍历每个属性并以这种方式检查值
var matches = {"users-email": "email", "users-activated": "activated", "users-created_at": "created_at", "users-registration_page": "registration_page", "profiles-firstname": "firstname"} ;
var option = 'firstname';
for (var key in matches) {
if (matches[key] === option) {
alert ("IN");
break;
}
}
答案 2 :(得分:3)
好像你正在检查价值而不是钥匙;也许是这样的?
var key = undefined;
for(var i in matches) {
if (matches[i] === option) {key = i; break; }
}
if (key !== undefined) delete matches[key];