有人可以解释一下我在这里做错了什么:
我有以下代码:
console.log(table);
$.each(datatableFields, function (a, b) {
if ($.inArray(b.substring(0, 3), neededFields) == -1) {
console.log('deleting ' + b);
delete table[b];
}
});
console.log(table);
我想要实现的目标应该很简单:
我有一个 Javascript 对象,我想“剥离”并删除任何不必要的字段。
'neededFields' 数组简单包含我希望保留的字段列表,不在该数组中的任何内容都将从主对象中删除。
运行上面的代码,我可以确认逻辑工作正常,并且确实 Firebug 向我显示了“删除###”完美地删除了主对象中的任何字段,而不是“neededFields”中的任何字段。
但...
我的 'delete table[b]' 命令似乎没有按预期工作,因为两个 'console.log(table)' 返回相同的结果!
有什么想法吗?
例如,如果我有以下对象:
{ABC:123, CDE:456, FGH:789, IJK:012, LMN:345},
{ABC:123, CDE:456, FGH:789, IJK:012, LMN:345},
{ABC:123, CDE:456, FGH:789, IJK:012, LMN:345},
{ABC:123, CDE:456, FGH:789, IJK:012, LMN:345},
{ABC:123, CDE:456, FGH:789, IJK:012, LMN:345},
{ABC:123, CDE:456, FGH:789, IJK:012, LMN:345},
{ABC:123, CDE:456, FGH:789, IJK:012, LMN:345} (等等......)
并删除某些键(比如 IJK 和 ABC),我的最终结果将是:
{CDE:456, FGH:789, LMN:345},
{CDE:456, FGH:789, LMN:345},
{CDE:456, FGH:789, LMN:345},
{CDE:456, FGH:789, LMN:345},
{CDE:456, FGH:789, LMN:345},
{CDE:456, FGH:789, LMN:345},
{CDE:456, FGH:789, LMN:345} (等等......)
编辑
“datatableFields”是一个包含主对象中所有键的数组,同样,“neededFields”是一个包含需要保留的键的数组。