Javascript 建议使用键为字符串代码的大型对象,而不是需要迭代的数组?

Javascript 建议使用键为字符串代码的大型对象,而不是需要迭代的数组?,javascript,performance,javascript-objects,Javascript,Performance,Javascript Objects,我有一个这样的数据结构 { "stores": [ { code: 'A7-22', name: 'market'}, { code: 'A8-22', name: 'drugstore'}, ... 250 items ] } 然后在代码中,我使用以下命令搜索商店: const code = 'A7-22'; const store = data.stores.find(stor

我有一个这样的数据结构

   {
       "stores": [
         { code: 'A7-22', name: 'market'},
         { code: 'A8-22', name: 'drugstore'},
         ... 250 items
       ]
   }
然后在代码中,我使用以下命令搜索商店:

const code = 'A7-22';
const store = data.stores.find(store => store.code === code)
但我认为将数据结构更改为

   {
       "stores": {
         'A7-22': {name: 'market'},
         'A8-22': { name: 'drugstore'},
         ... 250 items
       ]
   }
现在代码更容易处理:

const code = 'A7-22';
const store = data.stores[code]

现在,考虑这个代码运行在后端工件中,流量很高,在将来,该存储可以是10。 问题是:


如果我使用带有“键值策略”的大型对象选择选项2,则会出现一些与此代码相关的性能问题?

是的,第二个选项绝对更快。以下是两种情况的挑战:

var-code='A7-22',store={};
风险值数据={
“商店”:[
{代码:“A8-22”,名称:“药店”},
]
};

对于(var i=1;iNo,您的想法非常合理。它将复杂性从
O(n)
降低到
O(1)
。试试看。值得注意的是,10000是一个很大的数字,但从现代javascript环境中数组大小的角度来看,这并不是一个很大的问题。我想指出,如果性能不是问题的话(而且10k元素听起来不是问题),您应该基于更“清晰”的内容使用正确的数据结构。例如,如果某些数据的顺序很重要,我可能会选择类似数组的结构,或者如果选择数组使代码更易于遵循。在您的情况下,我会选择一个对象。不是为了性能,而是为了清晰。是否只有一个“名称”?如果是,请进一步缩小它:
存储:{'A7-22':'市场','A8-22':'药店',…}