如何使用Javascript构建使用这种命令行 objecttype("ID").property 调用的数据

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

我有 javascript 的基础知识。

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

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

之后,我想用这些命令行获取有关记忆对象的数据

objectype(id).property
objectype(id).function() 

结构示例

OBJECT
id = "uniqueID"
firstname= "firstname"
lastname = "lastname "
function_getfullname() = { return forthisID.firstname + " " + forthisID.lastname }
remove() = { remove from the collection this object (the object with this ID) }

价值观示例

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

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

命令行:

  • objecttype(1).firstname 将使用上述数据示例返回值“john”
  • objecttype(2).lastname 将返回值“thomas”
  • objectype(1).function_getfullname() 将使用上述函数示例返回值“john doe”
  • objecttype(1).remove 将从集合中删除 OBJECT_1

如何:

  • 做出技术声明 ?
  • 在集合中添加对象(声明链接到每个对象的值)?
  • 从集合中删除对象? (如果不能使用objectype(id).remove)
  • 使用 ForEach 循环遍历存储在集合中的对象

非常感谢您的帮助!

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.