Cok*_*god 5 javascript javascript-objects
我知道在JavaScript中有时系统会创建一个假数组,这意味着它实际上是一个对象而不是Array的实例,但仍然具有数组的部分功能.例如,你在函数内部获得的参数变量是由系统创建的伪数组.在这种情况下,我知道要把它变成一个真正的数组,你可以这样做:
var realArray = Array.prototype.slice.call(fakeArray);
Run Code Online (Sandbox Code Playgroud)
但是假如伪造的数组不是由系统创建的,如果假冒阵列只是简单的话:
var fakeArray = { "0": "some value", "1": "another value" };
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我测试了它,使用上面的方法将导致一个空数组.我希望能够像我给出的示例(由我而不是系统创建)将虚拟数组转换为真实数组.在你告诉我从一开始就把假阵列变成一个真正的数组之前,你应该知道我从一个我无法控制的资源中得到假数组.
那么,如何将系统未创建的假数组转换为实数数组呢?
小智 5
如果您的"假阵列"被赋予了.length适当设置的属性,那么您的示例将起作用.
这在某些旧版本的Internet Explorer中不起作用.
"将假阵列变成真正阵列的目的之一就是获得它的长度"
如果您想要对象中的属性数,请使用Object.keys...
var len = Object.keys(fakeArray).length;
Run Code Online (Sandbox Code Playgroud)
要Object.keys为旧版浏览器添加垫片,您可以这样做......
if (!Object.keys) {
Object.keys = function(o) {
var keys = [];
for (var k in o)
if (o.hasOwnProperty(k))
keys.push(k)
return keys;
};
}
Run Code Online (Sandbox Code Playgroud)
如果假阵列是"稀疏的",你需要像@Rocket节目这样的解决方案.
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |