Skip to content
大纲

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 不考虑