gpt4 book ai didi

javascript - 将我创建的假数组转换为 JavaScript 中的真实数组

转载 作者:数据小太阳 更新时间:2023-10-29 06:02:59 32 4
gpt4 key购买 nike

我知道在 JavaScript 中有时系统会创建一个伪数组,这意味着它实际上是一个对象而不是 Array 的实例,但仍然具有数组的部分功能。例如,您在函数内部获得的 arguments 变量是系统创建的伪数组。在这种情况下,我知道要将它变成一个真正的数组,你可以这样做:

var realArray = Array.prototype.slice.call(fakeArray);

但是如果假数组不是由系统创建的,如果 fakeArray 只是:

var fakeArray = { "0": "some value", "1": "another value" };

在这种情况下,我测试过,使用上面的方法将导致一个空数组。我希望能够将我给出的示例中的假数组(由我而不是系统创建)变成一个真实的数组。在你告诉我从一开始就把假数组简单地变成一个真正的数组之前,你应该知道我是从我无法控制的资源中得到假数组的。

那么,如何将一个不是系统创建的伪数组变成一个真正的数组呢?

最佳答案

如果您的“假数组”被赋予适当设置的 .length 属性,您的示例将起作用。

这在某些旧版本的 Internet Explorer 中不起作用。


"one of the purposes of turning the fake array into a real array is to get its length"

如果你想要对象中的属性数量,使用Object.keys...

var len = Object.keys(fakeArray).length;

要为旧版浏览器填充 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;
};
}

如果假数组是“稀疏的”,您将需要一个像@Rocket 展示的解决方案。

关于javascript - 将我创建的假数组转换为 JavaScript 中的真实数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11723070/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com