在javascript中何时使用对象或数组?
我刚刚发现数组直接从javascript中的对象继承。我发现数组和对象之间的差别非常小在javascript中何时使用对象或数组?,javascript,arrays,object,language-features,Javascript,Arrays,Object,Language Features,我刚刚发现数组直接从javascript中的对象继承。我发现数组和对象之间的差别非常小 如何知道何时使用一个而不是另一个?当一系列相关项目需要排序和索引时,通常使用数组。当需要依赖集合中元素的顺序时,使用数组;当顺序不重要时,使用对象。在对象中不能保证顺序,但它们提供了快速的键值对查找 当我处理与我想要的顺序相同的类型*(如字符串列表)的对象列表时,我会使用数组[],当我处理我想要属性的东西时,我会使用对象{} 例如: var numberNames = ["one","two","three"
如何知道何时使用一个而不是另一个?当一系列相关项目需要排序和索引时,通常使用数组。当需要依赖集合中元素的顺序时,使用数组;当顺序不重要时,使用对象。在对象中不能保证顺序,但它们提供了快速的键值对查找 当我处理与我想要的顺序相同的类型*(如字符串列表)的对象列表时,我会使用
数组[]
,当我处理我想要属性的东西时,我会使用对象{}
例如:
var numberNames = ["one","two","three","four"];
var computer = {
motherBoard : "mother",
psu : psu_object(),
ram : {
ram1 : GB,
ram2 : TwoGB
}
};
*这正是我的喜好。数组可以包含多种不同类型的元素。它们只是不同,用途不同<代码>数组扩展对象
,并提供长度
等属性和推送()
和弹出()
等方法
将对象视为哈希表,将数组视为列表
例如,您可以将数组用作队列或堆栈,这在对象中是不可能的
另一方面,如果您希望存储数据并希望直接访问特定的数据,则可以使用对象
最后,它归结为一个问题,即哪种数据结构适合这项工作。可能两者都不是,您需要一个树(可以通过对象实现)。
如果您有一个唯一的键,那么对象是一个很好的候选者
示例数组
与对象
:
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;
}
var item={id:'123',prop1:456};
var obj={},arr=[];
//添加到对象
obj[item.id]=物料;
//添加到数组
arr.push(项目);
//从对象获取
var got=obj[item.id];
//从数组中获取
var-got;
对于(变量i=0;i
正如您所看到的,使用数组
(循环)查找对象的成本要高得多。使用对象
您将无法访问所有数组
辅助方法(排序/推送/etc),但仍然可以使用for…in
循环来迭代对象的属性。对象键是字符串;数组键是整数。JavaScript对象是映射(String->anything
),数组是列表(anything
)的有序集合
这有帮助吗?请注意:JavaScript基本上将其数组视为对象。这意味着数组中的“整数”键实际上是字符串。(如果您有一个数组或函数键,则需要特别注意这一点;它会将这些键转换为字符串……)因此,在其他语言中,通过在对象上使用数组并不能真正提高性能。无论如何,这才是真正的答案。在需要键->值时使用对象,在只需要值或索引->值时使用数组。