考虑到一个对象:
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"
};
当前回答
另一个替代方案是使用 Underscore.js 图书馆。
請注意, _.pick() 和 _.omit() 兩者都返回對象的副本,並且不直接修改原始對象。
参考: 链接 _.pick(对象, *keys)
返回对象的副本,过滤到只有值为白化密钥(或一系列有效的密钥)。
var myJSONObject =
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
_.pick(myJSONObject, "ircEvent", "method");
=> {"ircEvent": "PRIVMSG", "method": "newURI"};
参考: 链接 _.omit(对象, * 关键)
返回对象的副本,过滤以忽略黑名单的钥匙(或一系列的钥匙)。
var myJSONObject =
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
_.omit(myJSONObject, "regex");
=> {"ircEvent": "PRIVMSG", "method": "newURI"};
对于序列,可以类似的方式使用 _.filter() 和 _.reject()。
其他回答
使用 ramda#dissoc 您将获得一个新的对象,而无需属性 regex:
const newObject = R.dissoc('regex', myObject);
// newObject !== myObject
你也可以使用其他功能来实现相同的效果 - 忽略,选择,...
尝试下面的方法. 将对象属性值分为未定义。
var myObject = {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}; myObject.regex = undefined; myObject = JSON.parse(JSON.stringify(myObject)); console.log(myObject);
删除对象的两种方式
使用为... 在函数中删除用户(键) { const newUsers = {}; for (const uid in users) { if (uid!== key) { newUsers[uid] = users[uid]; } return newUsers }
或
delete users[key]
这里有很多好答案,但我只是想说,当使用删除删除在JavaScript中删除一个属性时,很常见首先检查该属性是否存在,以防止错误。
E.G
var obj = {"property":"value", "property2":"value"};
if (obj && obj.hasOwnProperty("property2")) {
delete obj.property2;
} else {
//error handling
}
由于JavaScript的动态性质,经常有情况,你只是不知道是否存在的财产。 检查obj是否存在之前&& 也确保你不会扔错误,因为在未定义的对象上呼叫 hasOwnProperty() 函数。
对不起,如果这并没有添加到您的具体使用案例,但我认为这是一个很好的设计,在管理对象和其属性时适应。
使用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}