考虑到一个对象:
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
"regex": "^http://.*"
};
如何删除财产 regex 以完成下一个 myObject?
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI"
};
考虑到一个对象:
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
"regex": "^http://.*"
};
如何删除财产 regex 以完成下一个 myObject?
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI"
};
当前回答
如果你不想修改原始对象。
移除物品,而无需转换物品
如果移动性是一种担忧,你可以通过从旧的所有属性复制创建一个全新的对象,除了你想要删除的所有属性。
让 myObject = { “ircEvent”: “PRIVMSG”, “method”: “newURI”, “regex”: “^http://.*” };让 prop = “regex”; const updatedObject = Object.keys(myObject).reduce((object, key) => { if (key!== prop) { object[key] = myObject[key] } return object }, {}) console.log(updatedObject);
其他回答
使用 ramda#dissoc 您将获得一个新的对象,而无需属性 regex:
const newObject = R.dissoc('regex', myObject);
// newObject !== myObject
你也可以使用其他功能来实现相同的效果 - 忽略,选择,...
const obj = { foo: "bar" };
delete obj.foo;
obj.hasOwnProperty("foo"); // false
arr; // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr; // [0, 1, 2, 4]
let parent = {
member: { str: "Hello" }
};
let secondref = parent.member;
delete parent.member;
parent.member; // undefined
secondref; // { str: "Hello" }
另一个重要缺点是,删除操作员不会为您重新组织结构,这有可能看起来反直觉的结果。
let array = [0, 1, 2, 3]; // [0, 1, 2, 3]
delete array[2]; // [0, 1, empty, 3]
let fauxarray = {0: 1, 1: 2, length: 2};
fauxarray.__proto__ = [].__proto__;
fauxarray.push(3);
fauxarray; // [1, 2, 3]
Array.isArray(fauxarray); // false
Array.isArray([1, 2, 3]); // true
任何方法使用 Symbol.iterator 将返回不确定的值在指数. forEach,地图和减少将简单地错过错过的指数,但不会删除它
例子:
let array = [1, 2, 3]; // [1,2,3]
delete array[1]; // [1, empty, 3]
array.map(x => 0); // [0, empty, 0]
Array#splice 改变序列,并返回任何被删除的指标. deleteCount 元素从指标开始移除,并且 item1, item2... itemN 从指标开始插入序列. 如果 deleteCount 被忽略,则从 startIndex 元素被移除到序列结束。
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
首頁 〉外文書 〉文學 〉西洋文學 〉Array#slice([start[, end])
let a = [0,1,2,3,4]
let slices = [
a.slice(0,2),
a.slice(2,2),
a.slice(2,3),
a.slice(2,5) ]
// a [0,1,2,3,4]
// slices[0] [0 1]- - -
// slices[1] - - - - -
// slices[2] - -[3]- -
// slices[3] - -[2 4 5]
首頁 #pop
交换#Shift
短答
var obj = {
data: 1,
anotherData: 'sample'
}
delete obj.data //this removes data from the obj
你被留在
var obj = {
anotherData: 'sample'
}
使用删除方法是最好的方式来做到这一点,根据 MDN 描述,删除操作员从对象中删除一个属性。
delete myObject.regex;
// OR
delete myObject['regex'];
如果您正在尝试删除的财产不存在,删除将没有任何效果,并将返回真实。
因此,删除不能在全球范围内删除任何功能(无论是函数定义或函数(表达)的一部分)。
任何以 let 或 const 声明的属性都不能从它们被定义的范围内删除. 不可配置的属性不能删除. 这包括构建物品的属性,如 Math、Array、Object 和用 Object.defineProperty(等方法创建为不可配置的属性。
下面的剪辑给了另一个简单的例子:
有关更多信息和查看更多例子,请参阅下面的链接:
删除对象的两种方式
使用为... 在函数中删除用户(键) { const newUsers = {}; for (const uid in users) { if (uid!== key) { newUsers[uid] = users[uid]; } return newUsers }
或
delete users[key]