如何围绕具有预属性的对象构建数据结构,该对象将使用帖子中定义的命令进行调用[关闭]

问题描述 投票:0回答:1

我有 javascript 的基础知识。

我想存储链接到包含相同类型对象的集合中的对象的数据:

  • 保留在内存中(不保存到硬盘、SSD等支持中)
  • 不作为表名[列号,行号] 的数组调用

价值观示例

OBJECT_1
id = 1
firstname= "john"
lastname = "doe"

OBJECT_2
id = 2
firstname= "david"
lastname = "thomas"

如何:

  • 有命令 objectype(ID as option).function_add(ID,firstname,lastname),它使用以下规则在集合 objectype 中添加一个对象:
    • ID 必须是唯一的(另一个对象不能已经存在 具有相同的 ID)。
    • 如果
    • 没有在objecttype的括号中指定ID:在集合objecttype中的最后一个对象之后添加对象
    • 如果在 objecttype 的括号中指定了
    • ID :添加在已指定 ID 的对象后面。 示例:objectype(1).function_add(2, "joe", "din") 将在集合 objectype 内 ID 为 1 的对象之后添加一个新对象,其属性值 ID = 2、firstname = "joe" 和 Lastname = "din ”
    有命令
  • objectype(ID).function_remove()
  • 删除集合 objectype 中具有 ID 的对象 有命令
  • objecttype(ID).propertyname
  • ,它返回或设置属性(取决于它是在括号的左侧还是右侧)。 例子:
      objecttype(1).firstname = "john"
    • 会将值“john”设置为 集合 objectype 中 ID =1 的对象的属性名字。
    • variable = objectype(2).lastname
    • 将把集合 objectype 中 ID = 2 的对象的属性 Lastname 的值设置为变量。
    有命令
  • objectype(ID).function_getfullname()
  • ,它返回属性firstname的值,该值连接到集合objecttype内具有ID的对象的属性fullname的值。示例:objectype(1).getfullname 将返回“john doe”以及上面的“object 1”属性值 使用命令
  • objectype(ID).function_sort(propertyname)
  • 对集合 objecttype 中具有名为“propertyname”的属性的对象进行排序 write
  • 循环访问集合 objecttype
  • 中存储的对象,循环类型如下:
      foreach object in objectype { }
    • for i = 0 to objectype.length { }
    • (objectype.length 返回集合 objectype 中存储的对象数量)
  • 为了更好地理解,您能给我一个对象集合中的等价数据吗? 我认为开头示例中给出的对象将被写入如下所示的内容

[ [id = 1, firstname= "john", lastname = "doe"] , [id = 2 firstname= "david", lastname = "thomas"] ]

非常感谢您的帮助!

javascript database class variables javascript-objects
1个回答
0
投票
一种方法

来解决您的“如何做”问题:

使用
    Object
  • s
    将它们存储到 
  • Array
  • 通过 
  • .filter
  • 从数组中删除项目
    (不确定这是不是一个问题)是的,然后你可以使用
  • .forEach
  • 来循环数组
    
    
  • 以下内容足以使所有 4 点成为可能:

/******* IMPLEMENTATION *******/ let OBJECTS = []; function addObject(id, firstname, lastname) { OBJECTS.push({ id, firstname, lastname, getfullname() { return `${firstname} ${lastname}`; }, remove() { OBJECTS = OBJECTS.filter(x => x.id !== id); } }); } function objectype(id) { return OBJECTS.find(x => x.id === id); } function iterateObjects(callback) { OBJECTS.forEach(callback); } function removeObject(id) { OBJECTS = OBJECTS.filter(x => x.id !== id); } /******* TEST *******/ addObject(1, 'john', 'doe'); addObject(2, 'david', 'thomas'); console.log('firstname, ID 1', objectype(1).firstname); console.log('lastname, ID 2', objectype(2).lastname); iterateObjects(object => { console.log('forEach: getfullname', object.getfullname()); }); removeObject(1);

© www.soinside.com 2019 - 2024. All rights reserved.