【问题标题】:Javascript - Who weighs the most? (Accessing all values in object of array with same key name) [duplicate]Javascript - 谁最重? (访问具有相同键名的数组对象中的所有值)[重复]
【发布时间】:2018-08-21 20:56:47
【问题描述】:
let info = [
  {
    name: 'Harry Potter',
    weight: 160,
    hobby: 'quidditch',
  },
  {
    name: 'Hermione Granger',
    weight: 130,
    hobby: 'reading',
  }
  {
    name: 'Ronald Weasley',
    weight: 185,
    hobby: 'quidditch',
  }
]

我怎样才能知道谁最重?

到目前为止的思考过程——编写代码:

  • 列出所有权重
  • 从大到小排序 *
  • 选择最大数的索引 [0]

到目前为止,我还停留在第一步。我可以访问一个字符的特定权重,但不能访问所有权重。我试过这段代码:

const char_weight = data['weight']
console.log(char_weight)

但它返回为“未定义”。

【问题讨论】:

标签: javascript arrays javascript-objects


【解决方案1】:

有很多方法可以做到这一点。您可以简单地对数组进行排序,然后取顶部条目。

let info = [ { name: 'Harry Potter', weight: 160, hobby: 'quidditch', }, { name: 'Hermione Granger', weight: 130, hobby: 'reading', }, { name: 'Ronald Weasley', weight: 185, hobby: 'quidditch', } ]

console.log(info.sort((x,y) => y.weight - x.weight)[0])

根据反馈进行更新。

【讨论】:

  • x.weight < y.weightsort 的无意义的返回值。 sort 需要一个 数字,而不是布尔值。请改用y.weight - x.weight。另外,请使用[0],而不是.slice(0, 1)
  • 同意。谢谢!
  • 这是一个不错的解决方案。
【解决方案2】:

您可以遍历您的数组并获取具有最高权重值的对象的索引。使用索引,您还可以访问对象的其他属性。此方法不会改变数组。

let index = 0;

for (let i = 1; i < info.length; i++) {
    if (info[index].weight < info[i].weight) {
        index = i;
    }
}

现在具有最高权重值的对象的索引存储在 index 中,您可以访问如下属性:info[index].name、info[index].weight 等

【讨论】:

    猜你喜欢
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多