javascript - 获取 Javascript 对象中的属性
问题描述
我有以下 javascript 对象,它表示我希望用户可以根据他/她的选择选择显示和分析的表的列。
var nominalVars = {
state : 'State',
messoreg : 'Messoreg',
reggeoint : 'RegGeoInt',
reggeoimd : 'RegGeoImed',
microreg : 'Microreg',
regmetro : 'RegMetro',
city : 'City',
tipdepe : 'TipDep',
nvldepe : 'NvlDepe',
prefix : 'Prefix',
subord : 'Subord'
};
我需要的是检索最后选中的复选框下方的所有属性,例如,如果用户选择 [state] 复选框,那么我想要获取 [messoreg]、[reggeoint]、[reggeoimd]、[microreg] 等,并且他们将值传递给数组。
我不知道是否有另一种方法可以做到这一点,但我试图避免使用 If 语句的 Swith。
解决方案
如果要跟踪订单,则永远不要使用对象。您可以使用 aMap
或Array
. Map 对象保存键值对并记住键的原始插入顺序。
let map = new Map();
map.set('state','State');
map.set('messoreg','Messoreg');
map.set('reggeoint','RegGeoInt');
map.set('reggeoimd','RegGeoImed');
map.set('microreg','Microreg');
map.set('regmetro','RegMetro');
map.set('city','City');
map.set('tipdepe','TipDep');
map.set('nvldepe','NvlDepe');
map.set('prefix','Prefix');
map.set('subord','Subord');
function getKeys(map, afterKey) {
let shouldAdd = false, res = [];
for (const key of map.keys()) {
if (shouldAdd) res.push(key);
if (key === afterKey) shouldAdd = true;
}
return res;
}
function getKeysBefore(map, beforeKey) {
let shouldAdd = true, res = [];
for (const key of map.keys()) {
if (key === beforeKey) shouldAdd = false;
if (shouldAdd) res.push(key);
}
return res;
}
//get keys after 'reggeoint'
let keys;
keys = getKeys(map, 'reggeoint');
document.write(JSON.stringify(keys))
//get keys after 'city'
keys = getKeys(map, 'city');
document.write(JSON.stringify(keys))
//get keys before 'city'
keys = getKeysBefore(map, 'city');
document.write(JSON.stringify(keys))
推荐阅读
- javascript - Jquery Datatable - 需要先将数据居中然后右对齐
- javascript - AWS Lambda 在经历了将多个文件保存在 s3 存储桶中的 forEach 循环后返回“null”
- c# - 如何使剃须刀创建的动作链接制作POST?
- grafana - 无法使用 Zabbix 插件更改 Grafana 中的指标别名
- c - 尽管使用了正确的缩进,Makefile 缺少分隔符错误
- c# - 生成的 AssembyInfo 文件导致 Multilingual-App-Toolkit 重置翻译
- c - 在 C 中使用结构
- css - 将样式设置为具有随机数的类名
- ionic-framework - 文件未在服务器 ionic3 中上传
- core-data - NSFetchedResultsController 无法更新 tableView swift4