获取嵌套JavaScript对象中具有最高属性值的键的名称,

时间:2019-05-15 11:59:57

标签: javascript

var food = {
"fruit":{"brand":{"grgrdgdr":true,"ggyugy":true}, "sold":2},
"vegetable" :{"brand":{"htrhtr":true},"sold": 1},
"snack":{"brand":{"htrhr":true},"sold": 3},
"other":{"brand":{"gdhshd":true},"sold":1},
....
...
...

};

如何控制台记录销售最多的对象名称, 在这种情况下,应该是小吃一词。

我找到了此链接,但其结构与我的不相似。 Get object keys with the highest value in Javascript

任何帮助表示赞赏 预先感谢

5 个答案:

答案 0 :(得分:1)

您可以按values属性排序并获得第一项。

var food = { fruit: { brand: { grgrdgdr: true, ggyugy: true }, sold: 2 }, vegetable: { brand: { htrhtr: true }, sold: 1 }, snack: { brand: { htrhr: true }, sold: 3 }, other: { brand: { gdhshd: true }, sold: 1 } };
    result = Object
        .keys(food)
        .sort((a, b) => food[b].sold - food[a].sold)
        [0];

console.log(result);

答案 1 :(得分:0)

您可以使用变量并对数组进行两次迭代。在第一次迭代中,获得最高的sold。然后在第二次迭代中,添加其sold值与最高sold

相同的乘积

var food = {
  "fruit": {
    "brand": {
      "grgrdgdr": true,
      "ggyugy": true
    },
    "sold": 5
  },
  "vegetable": {
    "brand": {
      "htrhtr": true
    },
    "sold": 1
  },
  "snack": {
    "brand": {
      "htrhr": true
    },
    "sold": 3
  },
  "other": {
    "brand": {
      "gdhshd": true
    },
    "sold": 1
  },
  "someOtherfruit": {
    "brand": {
      "grgrdgdr": true,
      "ggyugy": true
    },
    "sold": 5
  }
}

let highestSold = 0;
let newObj = [];

for (let keys in food) {
  if (food[keys].sold > highestSold) {
    highestSold = food[keys].sold
  }
}

for (let keys in food) {
  if (food[keys].sold === highestSold) {
    newObj.push(food[keys])
  }
}

console.log(newObj[0])

答案 2 :(得分:0)

首先找到最大值,然后过滤对象以获取具有最大sold值的对象

var food = {
"fruit":{"brand":{"grgrdgdr":true,"ggyugy":true}, "sold":2},
"vegetable" :{"brand":{"htrhtr":true},"sold": 1},
"snack":{"brand":{"htrhr":true},"sold": 3},
"other":{"brand":{"gdhshd":true},"sold":1}}

var maxSold = Math.max(...Object.values(food).map(o=> o.sold))

var result = Object.keys(food).filter(o => food[o].sold ===maxSold)
console.log(result) //this will given all objects with max sold value

答案 3 :(得分:0)

您发布的链接Get object keys with the highest value in Javascript

很近

var food = {
"fruit":{"brand":{"grgrdgdr":true,"ggyugy":true}, "sold":2},
"vegetable" :{"brand":{"htrhtr":true},"sold": 1},
"snack":{"brand":{"htrhr":true},"sold": 3},
"other":{"brand":{"gdhshd":true},"sold":1}
  },
  result = Object
  .keys(food)
  .sort(function(a, b) {
    return food[b].sold - food[a].sold;
  })[0] // or  .slice(0, 1); 

console.log(result,food[result]);
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}

答案 4 :(得分:0)

var food = {
"fruit":{"brand":{"grgrdgdr":true,"ggyugy":true}, "sold":2},
"vegetable" :{"brand":{"htrhtr":true},"sold": 1},
"snack":{"brand":{"htrhr":true},"sold": 3},
"other":{"brand":{"gdhshd":true},"sold":1},
};


function getMostExpensivesKey(array) {
  let key = Object.keys(array)[0];

  Object.keys(array).forEach(function(k) {
    if(array[k].sold > array[key].sold) {
      key = k;
    }
  });

  return key;
}


console.log(getMostExpensivesKey(food));