gpt4 book ai didi

javascript - 避免键/数据重复

转载 作者:行者123 更新时间:2023-11-30 11:37:21 24 4
gpt4 key购买 nike

我对 JS 中的一些现有代码有设计上的烦恼。代码可以正常工作,所以我并不急于更改它,但下面显示的重复确实让我很烦。避免这种情况的通常/推荐/官方方法是什么?

实际系统是一个庞大/复杂的金融系统,所以我将其简化为最基本的例子来说明问题:

var colours={
red:{id:"red", vals:[1,0,0]},
green:{id:"green", vals:[0,1,0]},
grey:{id:"grey", vals:[0.5,0.5,0.5]}
// ...etc
};

// id needs to be known internally within the object - thus it is defined as a property.
// e.g:
colour.prototype.identify(console.log(this.id));

// id also needs to be used externally to find an object quickly.
// e.g:
function getcolour(s){return colours[s];}

// Although this works. It does mean duplicating data, with the theoretical possibility of a mismatch:
var colours={//...
blue:{id:"green", // oh dear...

专家通常会如何处理?

最佳答案

这个问题有点主观。

在创建我的应用程序时,我通常会尝试执行以下操作:

  • 永远不要在多个地方定义相同的数据。来源应始终明确
  • 如果我需要创建任何索引以便更快/更轻松地访问,我会使用实用程序方法来完成。这些方法应该经过适当的单元测试,这样我就不会怀疑它们做错了什么
  • 尽可能使用第三方库(例如已经建议的 lodash 或 underscore)以尽量减少要编写/维护的代码量。

如果您的算法和实用程序经过了适当的单元测试,您就不必(过分)担心数据会进入不一致状态。但是,如果这些是非常重要的系统/接口(interface),您可以在输出上添加一些验证。通常,对输入进行数据验证和编码是一种很好的做法。

实用方法说明: 如果你有数据数组,比如

var data = [{"id":"i_1", ...}, {"id":"i_2", ...},{"id":"i_3",....}];

然后你必须从中创建一个索引或基于原始数组创建更多数据集,然后你自己创建一个实用方法库来对数组进行修改、创建派生数据集或迭代数组并即时创建结果项。例如:

var createIndex = function( arr ){
// do something that converts the data array with expected structure to object
// {
// i_1: {"id":"i_1", ...},
// i_2: {"id":"i_2", ...},
// i_3: {"id":"i_3", ...}
return newObj;
}

此方法将创建一个 HashMap 来访问您的数据,这比一直迭代原始数组更快。但是现在,您可以轻松地对这种方法进行单元测试,并确保当您在源数据上使用它来获得您想要的数据集时,不会出现不一致。

关于javascript - 避免键/数据重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43889948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com