首页 / Javascript / 正文

[javascript]Javascript中如何从一个对象中删除某个或者某些属性?

3499 发布于: 2018-01-25 读完约需7分钟

问题描述

比如当前有如下的javascript对象:

var myObject = {
    "ircEvent": "PRIVMSG",
    "method": "newURI",
    "regex": "^http://.*"
};

现需要删除对象myObject中的 regex属性,使其成为一个新的对象,如:

var myObject = {
    "ircEvent": "PRIVMSG",
    "method": "newURI"
};

有哪些实现方式呢?

方案一

delete myObject.regex;
// 或者,
delete myObject['regex'];
// 或者,
var prop = "regex";
delete myObject[prop];

示例:

var myObject = {
    "ircEvent": "PRIVMSG",
    "method": "newURI",
    "regex": "^http://.*"
};
delete myObject.regex;

console.log(myObject);

方案二

在ECMAScript 2015 (或者 ES6) 中,可以使用 Reflect对象:

Reflect.deleteProperty(myJSONObject, 'regex');

方案三

function unset(unsetKey, unsetArr, resort){
  var tempArr = unsetArr;
  var unsetArr = {};
  delete tempArr[unsetKey];
  if(resort){
    j = -1;
  }
  for(i in tempArr){
    if(typeof(tempArr[i]) !== 'undefined'){
      if(resort){
        j++;
      }else{
        j = i;
      }
      unsetArr[j] = tempArr[i];
    }
  }
  return unsetArr;
}

var unsetArr = ['test','deletedString','test2'];

console.log(unset('1',unsetArr,true)); // output Object {0: "test", 1: "test2"}
console.log(unset('1',unsetArr,false)); // output Object {0: "test", 2: "test2"}

方案四

var myObject = {
  "ircEvent": "PRIVMSG",
  "method": "newURI",
  "regex": "^http://.*"
};

myObject = Object.keys(myObject).reduce(function(obj, key) {
  if (key != "regex") {           //key you want to remove
    obj[key] = myObject[key];
  }
  return obj;
}, {});

console.log(myObject);

ES6中:

const myObject = {
  ircEvent: 'PRIVMSG',
  method: 'newURI',
  regex: '^http://.*',
};

const myNewObject = Object.keys(myObject).reduce((obj, key) => {
  key !== 'regex' ? obj[key] = myObject[key] : null;
  return obj;
}, {});

console.log(myNewObject);

方案五

删除多层级属性:

const myObject = {
  ircEvent: 'PRIVMSG',
  method: 'newURI',
  regex: '^http://.*',
};

const myNewObject = Object.keys(myObject).reduce((obj, key) => {
  key !== 'regex' ? obj[key] = myObject[key] : null;
  return obj;
}, {});

console.log(myNewObject);

示例:

var a = {
    level1:{
        level2:{
            level3: {
                level4: "yolo"
            }
        }
    }
};

deepObjectRemove(a, ["level1", "level2", "level3"]);
console.log(a);

//Prints {level1: {level2: {}}}

方案六

使用JSON.parse(JSON.stringify(...)) 函数:

var myObject = {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};

myObject.regex = undefined;
myObject = JSON.parse(JSON.stringify(myObject));

console.log(myObject);

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: C#编程进阶视频教程--静态扩展方法与高级用法(基于静态扩展方法的链式编程)

下一篇: 非常漂亮精致基于Bootstrap+Material的轻量级响应式后台管理系统模板框架UI(Bootstrap 4)

本文永久链接码友网 » [javascript]Javascript中如何从一个对象中删除某个或者某些属性?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册