何时在javascript中使用对象或数组?

时间:2010-12-14 15:59:58

标签: javascript arrays object language-features

我刚刚发现Arrays在javascript中直接从Object继承。我发现数组和对象之间的差异相当小。

我如何知道何时使用其中一个?

7 个答案:

答案 0 :(得分:11)

当您需要依赖集合中元素的 order 时,请使用Arrays,当顺序不重要时,请使用对象。对象不保证顺序,但它们提供快速键值对查找。

答案 1 :(得分:8)

当我处理一个类型相同的对象列表*(比如一个字符串列表)我希望它的顺序时,我会使用Array []而当我处理Object {}时我正在处理我想要属性的东西(而且属性通常是不同的类型)。

例如:

var numberNames = ["one","two","three","four"];

var computer = {
     motherBoard : "mother", 
     psu : psu_object(),
     ram : { 
             ram1 : GB,
             ram2 : TwoGB
     }
};

*这只是我的偏好。数组可以包含多种不同类型的元素。

答案 2 :(得分:6)

它们只是不同data structures,它们用于不同的目的。 Array 扩展 Object并提供length等属性以及push()pop()等方法。

将对象视为哈希表,将数组视为列表。

E.g。你可以使用数组作为队列或堆栈,这是对象无法实现的。

另一方面,如果您想存储数据并希望直接访问特定数据,则可以使用对象。

最后归结为问题哪个数据结构适合作业。也许它们都不是,你需要一棵树(可以通过对象实现)。

答案 3 :(得分:3)

如果你有一个独特的密钥,

Objects是一个很好的候选人。

示例ArrayObject

var item = { id: '123', prop1: 456 };

var obj = {}, arr = [];

// add to object
obj[item.id] = item;

// add to array
arr.push(item);

// get from object
var got = obj[item.id];

// get from array
var got;
for(var i = 0; i < arr.length; i++)
    if(arr[i].id == item.id){
        got = arr[i];
        break;
    }

正如您所看到的,使用array(循环)查找对象要贵得多。使用object,您将无法访问所有array辅助方法(sort / push / etc),但您仍然可以使用for...in循环迭代对象的属性。

答案 4 :(得分:2)

如果要存储一种类型且逻辑上属于一起的对象集合,请使用数组。

你有什么特别想知道的吗?

当您想要操作所有相关项目(循环),按索引访问项目以及进行排序时,数组非常有用。

答案 5 :(得分:2)

对象键是字符串;数组键是整数。 JavaScript对象是地图(String -> anything),数组是列表(anything的有序集合)。

这有帮助吗?

答案 6 :(得分:0)

如果您有一系列需要订购和索引的相关项目,通常会使用数组。