我有这个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"});
谢谢!
8条答案
按热度按时间wmomyfyw1#
JavaScript对象没有定义与它们相关联的顺序,所以这是不可能的。
如果你需要一个顺序,你应该使用一个对象数组:
然后如果你想在第一个位置插入一些东西,你可以使用数组的unshift方法。
更多详情:Does JavaScript Guarantee Object Property Order?
k10s72fa2#
没有办法向JSON添加新条目并控制它们的位置。
如果你想处理有序(奇怪,因为对象是无序的),你基本上必须创建一个新对象并附加数据。
hm2xizp93#
JavaScript对象属性不是确定性排序的。无论属性的顺序如何,都可以访问它们。如果你依赖于它们在
for-in
循环中的特定顺序,我建议你重新考虑你的策略。不同的浏览器将采用不同的方法对属性进行排序。虽然许多浏览器实际上会按照您创建它们的顺序来处理它们,但这种行为实际上并没有在语言规范中定义,因此您不能依赖它。cygmwpex4#
这可以使用lodash merge函数来完成,如下所示:
您的最终对象将看起来像这样:
正如其他人提到的,不能保证对象中键的顺序保持不变,这取决于您对它的操作。但是,如果你执行合并作为你的最后一步,你应该没问题。注意,'merge'函数将产生一个全新的对象,它不会改变你传入的任何一个对象。
zbsbpyhn5#
我认为不移位的问题可能来自于你是一个关联数组的事实.Definition of associative array
这可能是一个黑客,但如果你必须在JSON对象的开始有这个值,怎么样:
6mzjoqzu6#
就这样做吧:
tvokkenx7#
试试这样的:
或
kmynzznz8#
字符串化和修改