Appearance
js删除对象属性的方法
js
let inputData={ aa: 1, bb: 2, cc: 4, dd: 5,ee:6 }
// 方案1 delete 精准删除
delete inputData.cc
//方案2 rest参数 精准删除
const delKey = (prop, { [prop]: _, ...rest }) => rest;
let newObj = delKey('cc', inputData);
// 方案2.5
let {aa, bb, dd, ee} = inputData;
let newObj = {aa, bb, dd, ee};
// 方案3 JSON.stringify 排除法
let newObj=JSON.parse(JSON.stringify(inputData, ['aa', 'bb', 'dd', 'ee']));
// 方案4
inputData.cc=undefined;
let newObj = JSON.parse(JSON.stringify(inputData));
// 方案5 for+if
const delKey2=(list=[],obj) =>{
let newObj = {}
for (let key in obj) { if (!list.include(key)) { newObj[key] = obj[key]; } }
return newObj
}
let newObj = delKey2(["cc"],inputData);
测试运行效率
js
console.time("timer");
// 执行一千万次
for (let index = 0; index < 10000000; index++) {
let inputData={ aa: 1, bb: 2, cc: 4, dd: 5,ee:6 }
// eg:
delete inputData.cc
}
console.timeEnd("timer");
- delete消耗时间
timer: 1309.419189453125 ms
- rest参数
timer: 788.573974609375 ms
- 解构
timer: 6.654052734375 ms
- JSON.stringify
timer: 5944.73095703125 ms
- 利用JSON.stringify 特性
timer: 3948.755859375 ms
- 利用for + if timer: 792.542236328125 ms
总结优先 - 解构,不确定性使用 rest参数
- 解构
- rest参数
- for + if
- delete
JSON.stringify 不考虑