【问题标题】:使用键创建数组的语法
【发布时间】:2022-01-23 07:27:16
【问题描述】:

编辑:完全简化。

考虑这段代码:

let arr = [42,69]
arr.key = 'lol'

它在数组中创建一个键。

但是,是否可以将这两行写成一个?我找不到有效的语法,我不确定它是否可行。

我想要这个的原因是因为我将数组推入另一个数组。 我可以使用一个对象,但我打算稍后从中弹出项目,但它不适用于对象。

let all = []
all.push({'0':42,'1':69,'key':'lol'})

【问题讨论】:

  • “它不起作用” - 对此进行扩展很有帮助。它似乎不是有效的语法,你混合了数组和对象,所以大概你的意思是它会抛出一个错误。但更广泛地说,我们不知道您的输入是什么或您期望的输出是什么。给minimal reproducible example
  • 您不能向数组添加键。您可以创建一个对象 {key : val} 或将键存储在数组中的项目中 - 再次使用对象 myarray = [{name: "item", key: 500},{name:"item 2", key:501}]
  • 显然它被称为关联数组。如果我在下一行做的话,我可以给它添加键。 pickedrocks[0].key = 500 工作得很好。
  • @agiopnl 为什么需要这样做?
  • @Unmitigated,最初我只有摇滚对象。我需要和他们一起发送临时信息,所以我不想在课堂上添加它。

标签: javascript arrays syntax key


【解决方案1】:

在 js 中你不能在数组中有键。他们只支持索引。如果要分配键,则必须使用对象或使用索引。

比如这样

const pickedRocks = []

// with objects
pickedRocks.push({value: lastBin.rocks.pop(),key: 500})

// with array index: 0 = value, 1 = key
pickedRocks.push([value: lastBin.rocks.pop(),500])

但是,由于您有一个键,您可以一起使用一个对象而不是一个数组。除非您希望能够有重复项。

const pickedRocks = {}

pickedRocks[500] = lastBin.rocks.pop();

【讨论】:

  • 我认为我也做不到,但pickedrocks[0].key = 500 工作得非常好。在控制台中,它看起来如此:剥绒[0] [摇滚,fromx:894.0303571428572,fromy:966.6660714285714,tox:1483.5446428571428571428,730.9696428571428] 0:Rock {x:112.46964285714286,Y:87.46964285714286,Color:'HSL(35,540%) ,60%)'} fromX: 894.0303571428572 fromY: 966.6660714285714 toX: 1483.5446428571427 toY: 730.9696428571428 length: 1 [[Prototype]]: Array(0)
  • 数组只是一个对象,你可以向它添加其他任意属性。但是array literal syntax 不支持任意属性。你可以用例如Object.assign,但从您发布的内容中不清楚这在您的上下文中是否有意义。
  • @jonrsharpe 这也是我的理解。 js中没有关联数组。这里我们使用 Objects 或 Sets
  • @VincentMenzel 顺便说一句:这个线程中的几个人说 JS 有关联数组。 stackoverflow.com/questions/14313444/…
  • @agiopnl 他们在谈论对象。请注意,它们是这样定义的{ ... },而数组是这样定义的[ ... ]。对象总是需要键值对{ someKey: 'someValue' }。稍后也可以使用变量myObject['someKey'] = 'someOtherValue' 或使用点符号myObject.someKey = 'someOtherValue' 设置值
猜你喜欢
  • 2013-03-26
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
相关资源
最近更新 更多