【问题标题】:DRY principle and JS object [closed]DRY原理和JS对象
【发布时间】:2022-08-24 06:05:42
【问题描述】:
const LISTENING_TASKS = {
    _7B2CDA: {number: \"7B2CDA\",
          type: TASKS_TYPES.written_1,},
    _DGA445: {number: \"DGA445\",
          type: TASKS_TYPES.written_2,},
}

这里的问题是违反了 DRY 原则。即:_7B2CDA 等于\"7B2CDA\"。

我需要这个数字来查找 JS 对象并进一步使用。但我不想重复自己。

  • 什么应该被建模的数据的形状?直觉上,对我来说,LISTENING_TASKS 听起来应该是一个数组。但我无法谈论在其余代码中可能需要的任何更改。
  • @David,我已经编辑了我的问题。无论如何,它是一个集合。数字地图 - 任务类型。
  • 那么这不是一个数组有什么特别的原因吗?如果将此结构更改为数组,会出现什么问题?
  • DRY 原则适用于代码,不适用于数据结构。我不明白为什么按字段之一索引应该是问题在数据中有相同的字段
  • 请解释为什么放弃两者之一会导致问题。如果没有您尝试解决的问题的上下文,似乎无法回答这个问题。

标签: javascript


【解决方案1】:

无法使对象中的值成为对另一个对象属性的引用。

这是一种需要函数的东西。

const TASKS_TYPES = {
  written_1: 1,
  written_2: 2,
}

const LISTENING_TASKS = {};

const addTask = (number, data) => {
  LISTENING_TASKS[`_${number}`] = {
    number,
    ...data
  };
}

addTask("7B2CDA", {
  type: TASKS_TYPES.written_1
});
addTask("DGA445", {
  type: TASKS_TYPES.written_2
});

console.log(LISTENING_TASKS);

【讨论】:

  • 让我们有一个对象 LISTENING_TASKS["7B2CDA"]。只是一个随意的对象。然后如果转移到另一个功能或什么的。反正号码就在里面。如何显示号码?
猜你喜欢
  • 2022-10-23
  • 1970-01-01
  • 2021-12-31
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
相关资源
最近更新 更多