Как удалить свойство из объекта JavaScript?

Скажем, я создаю объект следующим образом:

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

Каков наилучший способ удалить свойство regex, чтобы в итоге получить новый myObject следующим образом:

var myObject = {
    "ircEvent": "PRIVMSG",
    "method": "newURI"
};
+5722
источник поделиться
43 ответа
  • 1
  • 2

Использование lodash

import omit from 'lodash/omit';

const prevObject = {test: false, test2: true};
// Removes test2 key from previous object
const nextObject = omit(prevObject, 'test2');

Использование Ramda

R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3}
+4
источник

@johnstock, мы также можем использовать концепцию прототипирования JavaScript, чтобы добавить метод к объектам для удаления любого переданного ключа, доступного в вызывающем объекте.

Выше ответы приветствуются.

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

// 1st and direct way 
delete myObject.regex;  // delete myObject["regex"]
console.log(myObject); // { ircEvent: 'PRIVMSG', method: 'newURI' }

 // 2 way -  by using the concept of JavaScript prototyping concept
Object.prototype.removeFromObjectByKey = function(key) {
     // If key exists, remove it and return true
     if(this[key] !== undefined) {
           delete this[key]
           return true;
     }
     // Else return false
     return false;
}

var isRemoved = myObject.removeFromObjectByKey('method')
console.log(myObject)  // { ircEvent: 'PRIVMSG' }

// More examples
var obj = { a: 45, b: 56, c: 67}
console.log(obj) // { a: 45, b: 56, c: 67 }

// Remove key 'a' from obj
isRemoved = obj.removeFromObjectByKey('a')
console.log(isRemoved); //true
console.log(obj); // { b: 56, c: 67 }

// Remove key 'd' from obj which doesn't exist
var isRemoved = obj.removeFromObjectByKey('d')
console.log(isRemoved); // false
console.log(obj); // { b: 56, c: 67 }
+3
источник

Очень просто:

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

delete myObject.regex;
+2
источник

Я использовал lodash "unset" , чтобы это произошло и для вложенного объекта.. только для этого нужно написать небольшую логику, чтобы получить путь ключа свойства, который ожидается методом omit.

  • Метод, возвращающий путь свойства как массив

var a = {"bool":{"must":[{"range":{"price_index.final_price":{"gt":"450","lt":"500"}}},{"bool":{"should":[{"term":{"color_value.keyword":"Black"}}]}}]}};

function getPathOfKey(object,key,currentPath, t){
     var currentPath = currentPath || [];

    for(var i in object){
		if(i == key){
        t = currentPath;
      }
      else if(typeof object[i] == "object"){
        currentPath.push(i)
       return getPathOfKey(object[i], key,currentPath)
      }
    }
	t.push(key);
    return t;
}
document.getElementById("output").innerHTML =JSON.stringify(getPathOfKey(a,"price_index.final_price"))
<div id="output"> 

</div>
  • Затем просто используя lodash unset метод удаляет свойство из объекта.

var unset = require('lodash.unset');
unset(a,getPathOfKey(a,"price_index.final_price"));
+1
источник

вы можете использовать оператор delete, как показано ниже.

 var multiverse = {
        earth1: "Silver Age",
        earth2: "Golden Age"
    };

delete multiverse.earth2;//will return true if it finds 

// Outputs: { earth1: "Silver Age" }
console.log(multiverse);

Оператор delete также имеет return value. Если ему удастся удалить свойство, оно вернет true. Если ему не удастся удалить свойство, потому что свойство невосстанавливаемо, оно будет return false, или если в строгом режиме оно выдает ошибку.

+1
источник

Для

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

delete myObject ["regex"]; Также вы знаете индекс ключа, например. Вам нужно удалить второй ключ (regex), затем

var key =  Object.keys(myObject)[2]
delete myObject[key];

Много времени мы требуем удаления основанного на индексах в объекте. Клавиши "Запомните" в объекте могут быть в положении "вверх-вниз", поэтому, пожалуйста, будьте осторожны при использовании

+1
источник
function removeProperty(obj, prop) {
    if(prop in obj){

    Reflect.deleteProperty(obj, prop);
    return true;
   } else {
    return false;
  }
}
+1
источник

Как уже говорили многие, вы можете использовать "delete" (свойство javascript) или "unset" (используя lodash).

Вы также можете использовать свойство lodash "pick", чтобы выбрать только необходимые свойства объекта. Это поможет, когда вам удастся удалить несколько свойств из объекта.

Использование как ниже:

var _   = require("lodash");
var obj = {"a":1, "b":2, "c":3};
obj = _.pick(obj,["a","b"]);    
//Now obj contains only 2 props {"a":1, "b":2}
+1
источник

Вы можете использовать точечную или скобочную нотацию

//Bracket notation 
//its direct approach when you know the exact value which you want to remove
delete myObject.regex;


//Dot Notation 
//its dynamic approach when you don't know which value you want to remove at the point of code
delete myObject['regex'];
0
источник

Вы можете использовать фильтр, как показано ниже

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

let filter = {}
  Object.keys(myObject).filter(d => {
  if(d !== 'regex'){
    filter[d] = myObject[d];
  }
})

console.log(filter)

0
источник

Мы можем удалить любое свойство из объекта javascript, используя следующее:

  1. удалить object.property
  2. удалить объект ['property']

Пример:

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

console.log(myObject);

delete myObject.regex;
console.log('=================');
console.log(myObject);
delete myObject['method'];
console.log('=================');
console.log(myObject);

вывод:

{ ircEvent: 'PRIVMSG', method: 'newURI', regex: '^http://.*' }
=================
{ ircEvent: 'PRIVMSG', method: 'newURI' }
=================
{ ircEvent: 'PRIVMSG' }
0
источник
delete someObject["keyName"];
someObject["keyName"] // undefined
-1
источник
function removeElement(elementId) {
    // Removes an element from the document
    var element = document.getElementById(elementId);
    element.parentNode.removeChild(element);
}

function addElement(parentId, elementTag, elementId, html) {
    // Adds an element to the document
    var p = document.getElementById(parentId);
    var newElement = document.createElement(elementTag);
    newElement.setAttribute('id', elementId);
    newElement.innerHTML = html;
    p.appendChild(newElement);
}

для получения дополнительной информации нажмите здесь

-4
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос