[英]Add a new property at the beginning of a JSON object
我有這個 JSON:
var myVar = {
"9":"Automotive & Industrial",
"1":"Books",
"7":"Clothing"
};
我想在開頭添加一個新元素,我想最終得到這個:
var myVar = { "5":"Electronics", "9":"Automotive & Industrial", "1":"Books", "7":"Clothing" };
我試過這個,但它不起作用:
myVar.unshift({"5":"Electronics"});
謝謝!
根據定義,Javascript 對象沒有與它們關聯的順序,因此這是不可能的。
如果您需要訂單,您應該使用一組對象:
var myArray = [
{number: '9', value:'Automotive & Industrial'},
{number: '1', value:'Books'},
{number: '7', value:'Clothing'}
]
那么如果你想在第一個位置插入一些東西,你可以使用Arrays的unshift方法。
myArray.unshift({number:'5', value:'Electronics'})
//myArray is now the following
[{number:'5', value:'Electronics'},
{number: '9', value:'Automotive & Industrial'},
{number: '1', value:'Books'},
{number: '7', value:'Clothing'}]
更多細節在這里: JavaScript 是否保證對象屬性順序?
無法向 JSON 添加新條目並控制它們的位置。
如果你想處理順序[奇怪,因為對象是無序的],你基本上必須創建一個新對象並附加數據。
Javascript 對象屬性不是確定性排序的。 無論屬性的順序如何,都可以訪問它們。如果您依賴它們在for-in
循環中的特定順序,我建議重新考慮您的策略。 不同的瀏覽器將采用不同的方法對屬性進行排序。 雖然許多瀏覽器實際上會按照您創建它們的順序處理它們,但該行為實際上並未在語言規范中定義,因此您不能依賴它。
我認為 unshift 問題可能來自於你是一個關聯數組的事實。 關聯數組的定義
這可能是一個 hack 但如果您必須在 JSON 對象的開頭具有該值,那么如何:
var myNewVar={'5':'Electronics'};
for (xx in myVar) {
myNewVar[xx]=myVar[xx];
}
只需這樣做:
var myVar = {
"9":"Automotive & Industrial",
"1":"Books",
"7":"Clothing"
};
// if you want to add a property, then...
myVar["5"]="Electronics"; // note that it won't be "first" or "last", it's just "5"
嘗試這樣的事情:
myObject.sort(function(a,b) { return parseFloat(a.price) - parseFloat(b.price) } );
要么
myObject.sort(function(a,b) { return parseFloat(a.get("price")) - parseFloat(b.get("price")) } );
字符串化和修改
var foo = {a:1,b:2,c:3};
var bar = JSON.stringify(foo);
foo = JSON.parse('{"d":4,' + bar.slice(1));
alert(JSON.stringify(foo));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.