首页 > 解决方案 > 获取 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。

标签: javascriptjavascript-objects

解决方案


如果要跟踪订单,则永远不要使用对象。您可以使用 aMapArray. 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))


推荐阅读