下面是我的代码。我将一个数字放入一个对象中,它是键值对的两倍。我很好奇为什么它按 # 对结果进行排序。至于为什么 '13': 26 条目出现在 '21': 42 之前,而 13 在数组中出现在 21 之后?感谢您的任何见解。
var array = [1,2,3,4,5,8,7,21,13];
var object = {};
for (var i = 0; i < array.length; i++){
object[array[i]] = double(array[i]);
}
function double(a){
return a*2;
}
console.log(object);
这是我在控制台中得到的:
{ '1': 2,
'2': 4,
'3': 6,
'4': 8,
'5': 10,
'7': 14,
'8': 16,
'13': 26,
'21': 42 }
最佳答案
JavaScript 对象通常是无序的,您不应该依赖属性的顺序。 您可以尝试此代码段以按顺序获取结果:
var array = [1,2,3,4,5,8,7,21,13];
var object = {};
for (var i = 0; i < array.length; i++){
object[array[i]] = double(array[i]);
}
function double(a){
return a*2;
}
console.log(JSON.stringify(object));
编辑
上面的代码片段不能保证顺序,因为:
An object is a member of the type Object. It is an unordered collection of properties each of which contains a primitive value, object, or function.
因此您在代码中获得的顺序将取决于您的浏览器如何解释它(因为没有定义确切的规则,它可能按键按升序排序)。
保留此顺序的一种方法是使用数组(已排序)。这是一个使用对象数组的示例:
var array = [1,2,3,4,5,8,7,21,13];
var object = []; // changed this to an array
for (var i = 0; i < array.length; i++) {
var newObject = {};
// in order to insert keys as variables
newObject[array[i]] = double(array[i]);
object.push(newObject);
}
function double(a){
return a*2;
}
console.log(object);
注意:我先创建了一个对象,然后才将其推送到数组。如果您希望从某个变量设置键值,这是必需的。
关于javascript - 将键值对放入对象中 - 为什么它按 # 对条目进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40056426/