Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 - Fatal编程技术网

在javascript中存储和搜索键值对时,数组是否比对象更好?

在javascript中存储和搜索键值对时,数组是否比对象更好?,javascript,Javascript,我从数据库中获取数据,并将其存储在键值对中的数组中,这样我就可以获得如下所示的各个键的值 var test = []; for () //fetching and storing from db { test[key_array[i]] = "value i"; . . . } test["id_1"] = "value 1"; //to get the value of id_<number> va

我从数据库中获取数据,并将其存储在键值对中的数组中,这样我就可以获得如下所示的各个键的值

var test = [];
for ()            //fetching and storing from db
{
    test[key_array[i]] = "value i";
       .
       .
       .   
}


test["id_1"] = "value 1"; //to get the value of id_<number>
var测试=[];
for()//从数据库获取和存储
{
测试[key_array[i]]=“value i”;
.
.
.   
}
测试[“id_1”]=“值1”//获取id的值_
我们也能做到这一点。如果我们想要一个快速优化的代码

,我想知道哪个是更好的选择。 在javascript中存储和搜索键值对时,数组是否比对象更好

不。事实上,你不是把数组当作数组来使用,而是把它当作对象来使用。你完全可以改变你的想法

var test = [];

它会做和你现在看到的一样的事情:

var-test={};
测试[“id_1”]=“值_1”;
控制台日志(测试[“id_1]”);
var test2=Object.create(null);
test2[“id_2”]=“value_2”;

log(test2[“id_2”])


数组的概念是存储具有相同类型或逻辑结构的数据序列。因此,逻辑将来自db的数据放入数组。

请注意,您应该避免这种情况,因为它可能会变得非常混乱:

var测试=[];
测试[“id_1”]=“值_1”;
测试[-1]=“值0”;
日志(test[-1],test[“id_1]”);

log(test.length,Array.isArray(test))为什么要将数组作为普通对象的一部分?在java脚本中,所有的东西都是一个对象,因此可以像这样为它分配属性,但将其初始化为数组并没有什么区别,因为数组的方法比纯对象多。主要的问题是,您不能使用stringify将数组持久化为索引以外的其他属性……“您可以将
var test=[];
更改为
var test={};
,实际上您应该避免confusion@scraaappy-的确如此。我很惊讶我没有这么说(最初;-)。
var test = {};
// or
var test = Object.create(null); // To avoid it having a prototype