Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中何时使用对象或数组?_Javascript_Arrays_Object_Language Features - Fatal编程技术网

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

在javascript中何时使用对象或数组?,javascript,arrays,object,language-features,Javascript,Arrays,Object,Language Features,我刚刚发现数组直接从javascript中的对象继承。我发现数组和对象之间的差别非常小 如何知道何时使用一个而不是另一个?当一系列相关项目需要排序和索引时,通常使用数组。当需要依赖集合中元素的顺序时,使用数组;当顺序不重要时,使用对象。在对象中不能保证顺序,但它们提供了快速的键值对查找 当我处理与我想要的顺序相同的类型*(如字符串列表)的对象列表时,我会使用数组[],当我处理我想要属性的东西时,我会使用对象{} 例如: var numberNames = ["one","two","three"

我刚刚发现数组直接从javascript中的对象继承。我发现数组和对象之间的差别非常小


如何知道何时使用一个而不是另一个?

当一系列相关项目需要排序和索引时,通常使用数组。

当需要依赖集合中元素的顺序时,使用数组;当顺序不重要时,使用对象。在对象中不能保证顺序,但它们提供了快速的键值对查找

当我处理与我想要的顺序相同的类型*(如字符串列表)的对象列表时,我会使用
数组[]
,当我处理我想要属性的东西时,我会使用
对象{}

例如:

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基本上将其数组视为对象。这意味着数组中的“整数”键实际上是字符串。(如果您有一个数组或函数键,则需要特别注意这一点;它会将这些键转换为字符串……)因此,在其他语言中,通过在对象上使用数组并不能真正提高性能。无论如何,这才是真正的答案。在需要键->值时使用对象,在只需要值或索引->值时使用数组。