【问题标题】:Inserting property in JSON object at a specific position [duplicate]在 JSON 对象中的特定位置插入属性 [重复]
【发布时间】:2012-11-09 20:48:45
【问题描述】:

可能重复:
Does JavaScript Guarantee Object Property Order?

我想知道如何在特定位置插入 JSON 对象属性? 让我们假设这个 Javascript 对象:

var data = {
  0: 'lorem',
  1: 'dolor sit',
  2: 'consectetuer'
}

我有一个 ID 和一个字符串,比如:

var id = 6;
var str = 'adipiscing';

现在,我想在01 之间插入id(例如),它应该是这样的:

data = {
  0: 'lorem',
  6: 'adipiscing',
  1: 'dolor sit',
  2: 'consectetuer'
}

我该怎么做? 有没有 jQuery 解决方案?

【问题讨论】:

  • 我不认为 ECMAScript 规范说对象属性必须保持任何顺序。
  • 你不能。 JavaScript 的对象属性没有确定的顺序。
  • 如果您需要确定的数字索引顺序,您应该使用Array [] 代替。
  • 你为什么要这样?要访问该字符串,您必须使用data[i],其中i 是您的ID。顺序根本不重要。

标签: javascript jquery json


【解决方案1】:

要指定对象元素的放置顺序,您需要使用对象数组,如下所示:

data = [
    {0: 'lorem'},
    {1: 'dolor sit'},
    {2: 'consectetuer'}
]

然后您可以将元素推送到数组中的某个位置:

// Push {6: 'adipiscing'} to position 1
data.splice(1, 0, {6: 'adipiscing'})

// Result:
data = [
    {0: 'lorem'},
    {6: 'adipiscing'},
    {1: 'dolor sit'},
    {2: 'consectetuer'}
]
// Access it:
data[0][0] //"lorem"

但是,这将使您指定的索引 ({0:) 变得毫无用处。

【讨论】:

  • 问题是这里使用的是数组而不是对象
  • 问题是JavaScript中的对象不支持有序迭代,OP的数据结构很奇怪,这个问题来自2012。太老了!
猜你喜欢
  • 1970-01-01
  • 2011-10-27
  • 2016-04-15
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2022-01-05
相关资源
最近更新 更多