|
|
1
7373
这样地:
演示
对于任何有兴趣了解更多信息的人,堆栈溢出用户
kangax
写了一篇关于
|
|
|
2
777
算符
|
|
|
3
215
这在Firefox和Internet Explorer中有效,我认为它在所有其他浏览器中都有效。 |
|
|
4
165
更新2018-07-21: 很长一段时间以来,我对这个答案感到很尴尬,所以我想是时候把它润色一下了。只是一些评论、澄清和格式化,以帮助加快阅读这个答案中不必要的冗长和复杂部分。 简短的版本问题的实际答案
正如其他人所说,你可以使用
数组等效
不要
长版javascript是一种OOP语言,所以一切都是一个对象,包括 数组 . 因此,我觉得有必要指出一个特别的警告。
在数组中,使用
正如你所看到的,
老实说,除了
当然,它 做 让我吃惊。因为我写这篇文章是为了证明我反对“空垃圾”的运动是正当的:
这是摆脱
接下来是一个非常冗长的人为场景,因此您可以跳到该部分, 解决方案 ,如果你愿意的话。我离开这一部分的唯一原因是,我认为有些人可能认为这很有趣,我不想成为“那个家伙”,他发布了一个“有趣”的答案,然后从中删除所有的“有趣”。 …我知道这很愚蠢。 精心设计和长篇大论的PDP-11方案
解决方案:
|
|
|
5
129
旧问题,现代答案。使用对象销毁,一个 ECMAScript 6 功能,简单如下:
或者用问题样本:
You can see it in action in the Babel try-out editor. 编辑:
要重新分配给同一个变量,请使用
|
|
|
6
81
另一种选择是使用 Underscore.js 图书馆。
注意
参考文献: link _.pick(对象,*键) 返回对象的副本,筛选后仅具有 白名单键(或有效键数组)。
参考文献: link _.omit(对象,*键) 返回对象的副本,过滤后省略 黑名单密钥(或密钥数组)。
对于数组,
|
|
|
7
42
您在题名中使用的术语
如果你这样做:
结果是:
您可以从对象键中删除该特定键,如:
然后使用对象键
但关键是,如果您关心内存,并且希望从内存中删除整个对象,建议在删除键之前将其设置为空:
这里的另一个重要点是要注意您对同一对象的其他引用。例如,如果创建如下变量:
或将其作为新指针添加到其他对象,如:
即使你把它从你的物体上移开
答案是
删除代码中所有指向该对象的引用
而且
不使用
这意味着在这种情况下,您将无法删除该对象,因为您已经创建了
结果是
换句话说,只要您的代码中没有指向该对象的引用,就会杀死一个javascript对象。 更新: 感谢@agentme:
获取更多信息
|
|
8
33
假设您有一个像这样的对象:
删除对象属性
如果你想使用整个
或者,您也可以这样做:
同样,移除整个学生数组也可以通过调用
删除数组索引现在,如果您想删除一个工作人员或学生,这个过程有点不同,因为这两个属性都是数组本身。 如果你知道你的员工的索引,你可以简单地做到:
如果您不知道索引,还必须进行索引搜索:
注释
而你在技术上可以使用
因此,当从一个对象中删除值时,首先要考虑是处理对象属性还是处理数组值,并基于此选择适当的策略。 如果你想试验这个,你可以使用 this Fiddle 作为起点。 |
|
|
9
32
ECMAScript 2015(或ES6)内置 Reflect 对象。可以通过调用 Reflect.deleteProperty() 以目标对象和属性键为参数的函数:
相当于:
但是,如果对象的属性不可配置,则既不能使用delete property函数也不能使用delete运算符删除它:
Object.freeze()
使对象的所有属性都不可配置(除其他之外)。
两者之间的区别
|
|
|
10
31
Spread Syntax (ES6)给任何需要它的人… 若要在此线程中完成@koen answer,如果要使用排列语法删除动态变量,可以这样做:
*
Delete Operator
|
|
11
25
这个 delete operator 是最好的方法。 要显示的实时示例:
|
|
|
12
23
我个人使用 Underscore.js 或 Lodash 对于对象和数组操作:
|
|
13
18
另一个解决方案,使用
但是,它会 突变 原始对象。如果要创建新对象 没有 指定的键,只需将reduce函数赋给一个新变量,例如: (ES6)
|
|
14
18
使用 删除 方法是实现这一点的最佳方法,根据MDN描述,“删除”运算符从对象中移除属性。所以你可以简单地写:
下面的代码片段给出了另一个简单的示例:
有关更多信息和查看更多示例,请访问以下链接: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete |
|
15
17
这篇文章非常古老,我觉得它非常有用,所以我决定分享我写的unset函数,以防其他人看到这篇文章,并思考为什么它不像php unset函数那么简单。
写这个新的原因
|
|
|
16
16
这里有很多很好的答案,但我只是想补充一下,当使用delete在javascript中删除一个属性时,首先检查该属性是否存在以防止出错通常是明智的。 例如
由于javascript的动态特性,通常情况下您根本不知道属性是否存在。在&&之前检查obj是否存在,并确保不会由于对未定义对象调用hasownproperty()函数而引发错误。 很抱歉,如果这没有添加到您的特定用例中,但是我相信这是一个很好的设计,可以在管理对象及其属性时进行调整。 |
|
|
17
12
使用
ramda#dissoc
您将得到一个没有该属性的新对象
您还可以使用其他函数来实现相同的效果-省略、选取… |
|
|
18
11
如果要删除对象中深度嵌套的属性,则可以使用以下递归函数,其中属性路径作为第二个参数:
例子:
|
|
19
11
尝试以下方法。指派
|
|
|
20
8
使用ES6: (破坏+扩展运算符)
|
|
21
7
您可以使用
例如:
要移除任何属性,例如
也可以使用类似数组的符号:
裁判: MDN . |
|
|
22
6
丹认为“删除”的速度非常慢,他发布的基准也受到了质疑。所以我自己在Chrome59中进行了测试。“删除”似乎慢了30倍:
注意,我有目的地在一个循环周期中执行了多个“删除”操作,以最小化其他操作造成的影响。 |
|
|
23
6
考虑创建一个没有
|
|
|
24
6
object.assign()对象.keys()数组.map())
|
|
|
25
5
试试这个
|
|
|
26
5
你好,你可以试试这个简单的
|
|
|
27
5
|
|
|
28
4
使用土灰
使用RAMDA
|
|
|
29
4
在javascript中删除属性这个页面上有许多不同的选项,不是因为大多数选项都是错误的,或者答案是重复的,而是因为适当的技术取决于你所处的环境以及你和/或你的团队试图完成的任务的目标。要明确回答你的问题,你需要知道:
回答完这四个查询后,为了满足您的目标,Javascript中基本上有四类“属性删除”。他们是: 可变对象属性删除,不安全此类别用于在要保留/继续使用原始引用且代码中不使用无状态功能原则时对对象文本或对象实例进行操作。此类中的语法示例:
这一类别是最古老、最直接和最广泛支持的财产移除类别。它支持
基于REST的字符串属性省略此类别用于在需要非可变方法且不需要考虑符号键的情况下,以较新的ECMAScript风格在纯对象或数组实例上操作:
可变对象属性删除,安全此类别用于在要保留/继续使用原始引用,同时防止在不可配置的属性上引发异常时对对象文本或对象实例进行操作:
此外,虽然就地改变对象不是无状态的,但是可以使用
基于语法的字符串属性省略此类别用于在需要非可变方法且不需要考虑符号键的情况下,以较新的ECMAScript风格在纯对象或数组实例上操作:
基于库的属性省略此类别通常允许更大的功能灵活性,包括在一个语句中忽略符号和多个属性:
|
|
|
30
3
约翰斯塔克 我们还可以使用javascript的原型概念向对象添加方法,以删除调用对象中可用的任何传递的键。 以上答案不胜感激。
|
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 1 年前 |
|
|
Alex · 在轻量级中同时解构和不解构变量 1 年前 |
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 1 年前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 1 年前 |