【问题标题】:Insert iterated keys inside another object in Javascript在Javascript中的另一个对象中插入迭代键
【发布时间】:2022-01-24 17:08:13
【问题描述】:

我有一个像这样接收坐标值的对象

Object{
[key]:[value],
[key]:[value],
}

每个键都是一个坐标 x,y,每个值都是一个真正的布尔值。我通过一个程序生成坐标,该程序接收一个数组,其中 0 代表真,1 代表假,有一个宽度和一个高度。

我想以这种方式将每个键输出为该对象内的坐标 x,y:

Object{
[gridCoords([0, 0, 0, 0,
             1, 1, 0, 1,
             0, 0, 0, 0,
             0, 0, 0, 0],
             4,
             4)]:true,
}

所以,我的功能是这样的:

function gridCoords(data, height, width)  {
  var obj = [];
  for (let row = 0; row < height; row++) {
    for (let col = 0; col < width; col++) {
      let key=`${row * 16},${col * 16}`
      let value= (data[row * height + col] === 1 ? true: false )
      if (value){
        obj.push(key)
      }
    }
  }
  return obj
}

但我收到了这个:

{
16,0,16,16,16,48,32,16,32,32: true
}

代替:

{
16,0: true,
16,16: true,
16,48: true,
32,16: true,
32,32: true
}

我能做什么?

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    我认为你想要一个对象而不是数组:

    function gridCoords(data, height, width)  {
      var obj = {};
      for (let row = 0; row < height; row++) {
        for (let col = 0; col < width; col++) {
          let key=`${row * 16},${col * 16}`
          let value= (data[row * height + col] === 1 ? true: false )
          if (value){
            obj[key] = value
          }
        }
      }
      return Object.keys(obj)
    }
    

    【讨论】:

    • 你是对的!!!但这会返回我 [key]:[value] 并且我只想要键,因为 [value] 已经在主对象中。有可能吗?
    • 您可以通过调用Object.keys返回仅包含键的对象
    • 谢谢。问题是在我调用函数的对象中仍然输出这个 { 16,0,16,16,16,48,32,16,32,32: true}。
    • 不要在返回值上调用 Object.keys 并且不要将函数调用包装在另一个对象中
    • 就这样称呼吧gridCoords([0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], 4,4)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2012-01-13
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多