字符串映射=>任何(`require`)?
Map of string=>any (`require`)?
我有一个需要有序元素的结构。以前使用 {}
。服务器端 (Node.js).
Map
s 不支持任意内容,但我希望字符串索引而不是数组。备选方案?
gt.js
exports.gt = (a, b) => a > b;
lt.js
exports.lt = (a, b) => a < b;
operators.js
const operators = {lt: require('./lt'), gt: require('./gt')};
有序访问的方法:
// Option 0
const order = ['lt', 'gt'];
order.forEach(o => console.info(`option0::${o} =`, operators[o], ';'));
// Option 1
const operatorsList = [['lt', operators.lt], ['gt', operators.gt]];
console.info('option1::operatorsList =', operatorsList, ';');
// Option 2
const orderedMap = new Map(operatorsList);
console.info('option2::orderedMap =', orderedMap, ';');
输出:
option0::lt = { lt: [Function] } ;
option0::gt = { gt: [Function] } ;
option1::operatorsList = [['lt', { lt: [Function]}],['gt', { gt: [Function]}]] ;
option2::orderedMap = Map {'lt' => {lt: [Function]}, 'gt' => { gt: [Function]} } ;
第一个选项有效并允许高效访问,但更好地避免了维护外部索引的开销。
您可以像这样将订单存储在值中:
const orderedObjects = {
"somekey":{order: 0,value:"this is the first value"},
"someotherkey":{order: 1,value:"this is the second value"},
"anotherkey":{order: 2,value:"this is the third value"}
};
这个解决方案确实增加了一些膨胀,但过去对我来说效果很好。
仅使用 Map
的选项 2 实际上确实有效,并且能够存储任意内容。我的调试问题是我使用 JSON.stringify
登录到 console
:\
我有一个需要有序元素的结构。以前使用 {}
。服务器端 (Node.js).
Map
s 不支持任意内容,但我希望字符串索引而不是数组。备选方案?
gt.js
exports.gt = (a, b) => a > b;
lt.js
exports.lt = (a, b) => a < b;
operators.js
const operators = {lt: require('./lt'), gt: require('./gt')};
有序访问的方法:
// Option 0
const order = ['lt', 'gt'];
order.forEach(o => console.info(`option0::${o} =`, operators[o], ';'));
// Option 1
const operatorsList = [['lt', operators.lt], ['gt', operators.gt]];
console.info('option1::operatorsList =', operatorsList, ';');
// Option 2
const orderedMap = new Map(operatorsList);
console.info('option2::orderedMap =', orderedMap, ';');
输出:
option0::lt = { lt: [Function] } ;
option0::gt = { gt: [Function] } ;
option1::operatorsList = [['lt', { lt: [Function]}],['gt', { gt: [Function]}]] ;
option2::orderedMap = Map {'lt' => {lt: [Function]}, 'gt' => { gt: [Function]} } ;
第一个选项有效并允许高效访问,但更好地避免了维护外部索引的开销。
您可以像这样将订单存储在值中:
const orderedObjects = {
"somekey":{order: 0,value:"this is the first value"},
"someotherkey":{order: 1,value:"this is the second value"},
"anotherkey":{order: 2,value:"this is the third value"}
};
这个解决方案确实增加了一些膨胀,但过去对我来说效果很好。
仅使用 Map
的选项 2 实际上确实有效,并且能够存储任意内容。我的调试问题是我使用 JSON.stringify
登录到 console
:\