11

次のように、ページが読み込まれたときに開始される JSON オブジェクトがあります。

data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;

オブジェクトが開始されたときに追加された要素の前に新しい要素がループされるfooように、最初の要素の前に要素を挿入する方法はありますか?for var i in data

その理由は、いくつかのアイテムをユーザーに表示しているためです。ユーザーがJavaScriptを介して新しいアイテムを追加すると、この新しいアイテムを既存のすべてのアイテムの上に表示したいのですが、新しいアイテムを追加すると、

data[newItem] = newItem;

次に、JSON オブジェクトは次のようになります。

data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;
data[newItem] = newItem;

私が望む方法の代わりに、それは次のとおりです。

data[newItem] = newItem;
data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;

何か案は?

4

6 に答える 6

16

JSでは、オブジェクトプロパティの順序は保証されません。したがって、JSON文字列で順序付けられている場合でも、JSオブジェクトとして解析される場合、それらがどの順序で表示されるかを予測することはできません。

代わりに配列を使用することをお勧めします。このメソッドを使用してunshift()、アイテムを最初のインデックスに入れることができます。

var data = [bar,bar2,bar3];

data.unshift(newItem);

//data = [newItem,bar,bar2,bar3];
于 2012-05-27T12:03:17.797 に答える
8

Joseph the Dreamer回答への賛辞として、firefox と chrome でいくつかの簡単なチェックを実行しました。

ファイアフォックス:

var obj = {};

obj.a = 'a';
obj.c = 'c';
obj.b = 'b';
obj['0'] = '0';

for(var i in obj){
    console.log(i);
}

//prints:
a
c
b
0

クロム:

var obj = {};

obj.a = 'a';
obj.c = 'c';
obj.b = 'b';
obj['0'] = '0';

for(var i in obj){
    console.log(i);
}

//prints:
0
a
c
b
于 2012-05-27T12:12:13.607 に答える
3

Is there a way to inject an element before the first foo element?

Which comes first in the array:

window.object or window.alert?

Neither, objects don't have an order. If you want an array use an array. Objects are not arrays.

If you want

var ThingsInOrder = [
  FirstThing,
  SecondThing,
  ThirdThing
];
ThingsInOrder.push(ForthThing);

Use an array.

If you want:

var ThingsNeverInOrder = {
  Window,
  Alert,
  Derp,
  Herp
};

ThingsNeverInOrder.foo = bar;

Use an object.

于 2012-05-27T12:07:21.960 に答える
0

同じオブジェクトに新しい値を追加する代わりに、新しいオブジェクトを作成して、必要に応じてプロパティの順序を並べ替えることができます。例 :

var objj1 = {name:'viru',lastname:'nehra'};

したがって、上に必要な新しいプロパティを持つ新しいオブジェクトを作成します。

var obj2 = {age: 21}

そして実行:

for(var key in objj1){
   obj2[key] = objj1[key]
}

obj2 = {age: 21, name: "viru", lastname: "nehra"}
于 2017-09-11T06:34:43.460 に答える
-3

文字列に変換し、文字列の先頭にデータを追加してから、「eval」を使用して文字列をjsonに再変換できると思います。

于 2012-05-27T12:05:54.517 に答える