我尝试使用.map()
从名称长度大于1的对象中删除属性:
var result = { a :{}, b : {}, invalid : {} };
result = $.map(result, function(val, prop){
return prop.length > 1 ? null : { prop : val };
});
console.log(result);
控制台显示result
现在是一个数组(不应该是一个对象), prop
字面意思(即那里)在阵列中有许多名为" prop"的属性。
任何帮助都会很棒!
编辑:结合.map()
和delete
的解决方案:
$.map(result, function(val, prop){
if(prop.length > 1) delete result[prop]; // val is unused but required
});
答案 0 :(得分:2)
我认为$.map
不适合这项任务。我会依靠您不想要的for...in
循环和delete
属性:
var result = { a :{}, b : {}, invalid : {} };
for (var prop in result) {
if (result.hasOwnProperty(prop)) {
if (prop.length > 1) {
delete result[prop];
}
}
}
示例: http://jsfiddle.net/LHFdp/
如果您确实想使用$.map
,可以使用[]
动态访问属性(有关使用对象的详细信息,请参阅MDN上的this useful article):
var result = { a :{}, b : {}, invalid : {} };
result = $.map(result, function (val, prop) {
var obj = {};
if (prop.length > 1) {
return null;
} else {
obj[prop] = val;
return obj;
}
});
答案 1 :(得分:0)
jQuery map
从您传递给它的数组或对象中提供一个数组。它返回与回调中的条件匹配的数组或对象中的所有项。您可以在结果数组中控制所需内容。