在JS中;

试图编写一个函数,该函数需要一个对象数组和一系列参数。该函数将删除任何未作为参数给出的属性。

例:
输入
cleanseData([{a:'b',c:'d'},{a:'q'}],'a');

输出
[{a:'b'},{a:'q'}]

这是尝试过的函数,但对象保持不变。

var cleanseData = function(listObj, key1, key2, key3) {
    for (var i=0; i<listObj.length; i++) {
        for(k in listObj[i]) {
            if(k !== key1 && k!==key2 && k!==key3) {
            delete listObj[i].k;
            }
        }
    }
    return listObj;
}

最佳答案

在这条线...

delete listObj[i].k;


它正在尝试删除属性k,该属性不存在。改成...

delete listObj[i][k];


Fiddle

09-20 09:04