recordsMap
是 MemorySystem
类的一个属性。它是一个存储记录的对象字典。每种类型的记录都被存储在一个数组中。每种记录都有一个唯一的记录ID。
recordsMap
对象包含若干个子对象,每个子对象都代表一种类型的记录。子对象的属性名为类型名称,属性值为记录数组。例如:
{
"book": [
{ "id": 1, "title": "JavaScript权威指南", "author": "Flanagan" },
{ "id": 2, "title": "CSS揭秘", "author": "Lea" }
],
"movie": [
{ "id": 101, "title": "肖申克的救赎", "director": "Darabont" },
{ "id": 102, "title": "霸王别姬", "director": "Kaige" }
]
}
recordsMap
对象提供了一些方法,用于操作记录数组:
addRecord(typeName, recordObj)
: 为指定类型的记录添加新记录。typeName
是记录的类型名称,recordObj
是一个 JavaScript 对象,代表要添加的新记录。该方法返回新记录的 ID。removeRecord(typeName, recordId)
: 从指定类型的记录数组中移除一条记录。typeName
是记录的类型名称,recordId
是要移除的记录的 ID。updateRecord(typeName, recordId, updateObj)
: 更新指定类型的记录的某个字段。typeName
是记录的类型名称,recordId
是要更新的记录的 ID,updateObj
是一个包含要更新字段及对应值的 JavaScript 对象。getRecordById(typeName, recordId)
: 根据类型名称和 ID 获取一条记录。返回一条 JavaScript 对象,包含该条记录的全部字段信息。getRecordsByType(typeName)
: 获取某一类型的所有记录。返回一个数组,包含该类型所有记录的 JavaScript 对象。下例演示如何使用 recordsMap
对象的方法操作记录数组。
const yuka = new Yuka.MemorySystem();
// 添加记录
const bookId1 = yuka.recordsMap.addRecord('book', { title: 'JavaScript高级程序设计', author: 'Nicholas' });
const bookId2 = yuka.recordsMap.addRecord('book', { title: '图解HTTP', author: '上野' });
// 更新记录
yuka.recordsMap.updateRecord('book', bookId2, { title: '图解HTTP2', author: '上野' });
// 获取记录
console.log(yuka.recordsMap.getRecordById('book', bookId1));
console.log(yuka.recordsMap.getRecordsByType('book'));
// 移除记录
yuka.recordsMap.removeRecord('book', bookId2);
console.log(yuka.recordsMap.getRecordsByType('book'));
输出结果:
{ "id": 3, "title": "JavaScript高级程序设计", "author": "Nicholas" }
[
{ "id": 3, "title": "JavaScript高级程序设计", "author": "Nicholas" },
{ "id": 4, "title": "图解HTTP2", "author": "上野" }
]
[
{ "id": 3, "title": "JavaScript高级程序设计", "author": "Nicholas" }
]