我刚刚发现Arrays在javascript中直接从Object继承。我发现数组和对象之间的差异相当小。
我如何知道何时使用其中一个?
答案 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
是一个很好的候选人。
示例Array
与Object
:
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)
如果您有一系列需要订购和索引的相关项目,通常会使用数组。