Извлечение ключа имени в объекте - PullRequest
0 голосов
/ 13 октября 2018

вот мой var DL = 10 LL = 05

var service_load_combo = {
    "SL1": {
        "results": DL
    },
    "SL2": {
        "results": DL + LL,
    }
  };

, поэтому результаты SL1.results = 10 и SL2.results = 15. Поскольку SL2.results является наибольшим значением из двух.Как я могу получить имя объекта ответ "SL2".я пробовал Object.key (), но это довольно сложно.Надеюсь, вы могли бы помочь мне.

Ответы [ 3 ]

0 голосов
/ 13 октября 2018

Это простой алгоритм max, который также возвращает соответствующий ключ.Это будет работать с любым количеством SL записей.

var maxValue = Number.MIN_VALUE;
var maxKey = null;
Object.keys(service_load_combo).forEach(k => {
    var currentValue = service_load_combo[k].results;
    if (currentValue > maxValue) {
        maxValue = currentValue;
        maxKey = k;
    }
});
console.log(`Max: Key: ${maxKey} Value: ${maxValue}`);

Если вы получили только 2 ключа и заботитесь только об их имени, то:

var keys = Object.keys(service_load_combo);
var maxKey= (service_load_combo[keys[0]] > service_load_combo[keys[1]] ? keys[0] : keys[1]);
console.log(`Max: Key: ${maxKey}`);
0 голосов
/ 13 октября 2018

Вы можете использовать для ... в

let DL = 10, LL = 5;
let service_load_combo = { "SL1": {"results": DL},"SL2": {"results": DL + LL}};
 
// Setting max as 0, assuming no negative values, else can set to Number.MIN_VALUE
let max = 0, maxKey;
for (let key in service_load_combo) {
  // If the value is greater than max value, update max and maxKey
  if(service_load_combo[key].results > max) {
    max = service_load_combo[key].results ;
    maxKey =  key;
  } 
}
console.log(maxKey);
0 голосов
/ 13 октября 2018

Вы можете использовать это:

var keyNames = Object.keys(myObject);
if ( keyNames.indexOf( "SL2" ) !== -1 ) { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...