【问题标题】:How to create an object containing a range of values for a key如何创建包含键值范围的对象
【发布时间】:2021-06-27 16:39:30
【问题描述】:

我正在尝试创建一个对象,该对象应为我将用作查找表的键保存一系列值。例如,它需要“捕获”范围内的值:500-524、600-650 等。

例如:

const numbers = {
  500 to 524: "20",
  600 to 650: "25"
}

我想通过以下方式访问该值:

user.list.map(list => numbers[user.points]).

我知道我可以将范围内的所有值作为键,但这会非常低效:

const numbers = {
  "500": "20",
  "501": "20",
  "502": "20",
  "503": "20",
  (...)
}

那么,是否有可能以某种方式包含范围?

【问题讨论】:

  • 试试JSON.parse(JSON.stringify(number));
  • 很遗憾,我不明白你在问什么。对象使用字符串键,没有“x 到 y”之类的东西,那是一个数组。另外,500 at 524: "20", 的实际意思是什么?因为那是非法的 JS,所以它无助于说明你要构建什么样的东西。
  • @Mike'Pomax'Kamermans 这将是一种从 500 到 524 的简化方式,无需输入 501、502、503、504、505、506 等。
  • 好的,那是什么意思?你希望最后有什么真正的对象?

标签: javascript object


【解决方案1】:

你可以这样设置:

numbers = [
  {"start": 500, "end": 524, "value": "20"},
  ...
  ...
]

function getFromNumbers(num) {
  for(let i=0; i<numbers.length; i++) {
    numVal = numbers[i];
    if(numVal.start <= num && numVal.end >= num)
      return numVal.value;
  }
}

console.log(user.list.map(list => getFromNumbers(user.points)))

【讨论】:

    【解决方案2】:

    为什么不创建这样的对象:

    const numbers =
    [
        {
            start : 500
            end : 524
            value :20
        },
        {
            start : 600
            end : 650
            value : 25
         }
    ]
    

    【讨论】:

      【解决方案3】:

      我认为您应该反转解决方案。您可以创建对象,其中key"20"value 是值数组。例如:

      const numbers = {
          "20": _.range(500, 524)
      }
      

      【讨论】:

        猜你喜欢
        • 2016-03-28
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 2019-01-13
        • 1970-01-01
        • 2011-06-12
        相关资源
        最近更新 更多