在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;
}
答案 0 :(得分:3)
答案 1 :(得分:1)
var cleanseData = function (listObj,key) {
for (var i = 0;i < listObj.length; i++) {
for(var k in listObj[i])
if (k!=key) {
delete listObj[i][k];
}
}
return listObj;
}
console.log(JSON.stringify(cleanseData([{a: 'b', c:'d'}, {a: 'q'}], 'a')));
答案 2 :(得分:0)
作为一种风格,你可以做这样的事情
function cleanse(arr, proplist) {
return arr.map(function(elem) {
var props = Object.keys(elem);
var props_to_remove = props.filter(function(p) {
return proplist.indexOf(p) === -1;
});
props_to_remove.forEach(function(p) {
delete elem[p];
})
return elem;
});
}
请注意,这将返回一个满足您条件的新数组,并且不会修改您传入的旧数组。