使用 jQuery 的内置map
方法怎么样?http://api.jquery.com/jQuery.map/
(function(){
var obj = {
a: true,
b: true,
c: false,
d: true,
e: true
},
f,
true_obj = {};
f = $.map(obj, function (val, key) {
return (val === true) ? key : null;
});
for (var c = 0; c < f.length; c++){
true_obj[c] = f[c];
}
console.log(true_obj);
}());
http://jsfiddle.net/gVZVL/
如果值不是/ ,则回调中评估的值map
将添加到结果数组中。null
undefined
此外,如果您希望将f
数组复制到true_obj
,只需使用slice
(而不是for
循环)- https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice:
true_obj = f.slice(0);
http://jsfiddle.net/gVZVL/1/
更新:
如果您只是想过滤 中的项目Object
,请尝试以下操作:
for (var key in obj) {
if (obj[key] !== true) {
delete obj[key];
}
}
如果您尝试复制它(也保留原件Object
),您可以使用:
var final_obj = {};
for (var key in obj) {
if (obj[key] === true) {
final_obj[key] = obj[key];
}
}
在其中任何一个中,如果您从以下内容开始:
var obj = {
a: true,
b: true,
c: false,
d: true,
e: true
};
你最终会得到
{
a: true,
b: true,
d: true,
e: true
}
(覆盖或复制)