我对JavaScript的delete
运算符有点困惑.采取以下代码:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Run Code Online (Sandbox Code Playgroud)
在执行了这段代码之后,obj
是null
,但foo
仍然指的是一个完全相同的对象obj
.我猜这个对象是foo
指向的同一个对象.
这让我很困惑,因为我期望写作delete obj
删除了obj
指向内存的对象- 而不仅仅是变量obj
.
这是因为JavaScript的垃圾回收工作在保留/释放的基础,所以,如果我没有指向对象的任何其他变量,它会从内存中清除?
(顺便说一句,我的测试是在Safari 4中完成的.)
javascript garbage-collection pointers memory-management object
我正试图在javascript中过滤一个数组,并且当数组嵌套时我正在努力.
目前,我能够得到的最远的是过滤扁平阵列:
var ID = 3
var arr = [{ id : 1, name: "a" }, { id : 2, name: "b" }, { id : 3, name: "c" }]
var result = arr.filter(function( obj ) {return obj.id == ID;});
alert(result[0].name);
Run Code Online (Sandbox Code Playgroud)
虽然如果数组看起来像这样,上面的代码不起作用:
var arr2 = [
[{ id : 1, name: "a" },{ id : 2, name: "b" }],
[{ id : 3, name: "c" },{ id : 4, name: "d" }]
]
Run Code Online (Sandbox Code Playgroud)
可以找到两个例子:https://jsfiddle.net/vjt45xv4/
任何有关在嵌套数组上找到适当结果的提示都将非常感激.
谢谢!