应用脚本未按正确顺序返回对象

时间:2020-04-15 06:17:14

标签: javascript arrays function object google-apps-script

大家下午好

我对编码还很陌生。我之所以开始编写代码,是因为喜欢解决问题并更好地改善我的业务管理。如果我看起来很粗鲁,请原谅我。我正在寻找最好的东西。

在我的脚本编辑器中,我有以下代码。

var parDetails = [];

//To add participant data into participant log
function addparDetails(code, name, dob, gender, health){ 
    parDetails.push({code, name, dob, gender, health});
    return parDetails;
    }

//Participant details [updated]
  for (let i = 0; i <= 1; i++){
    addparDetails("123151", "John Doe", "18 June 2000","M", "Asthma");
}
Logger.log(parDetails);

It should return in the order of 
{code = 123151
 name = John Doe
 date = 18 June 2000
 Gender = M
 Health = Asthma}

However, it keeps returning in this order 
{dob = 18 June 2000
 name = John Doe
 gender = M
 code = 123151
 Health = asthma}

sometimes it can also be in a different order|

有人可以解释为什么会这样吗?如果您需要任何进一步的说明,请告诉我!

2 个答案:

答案 0 :(得分:0)

这是objects在javascript中的工作方式。不能保证它们的键值对的顺序保持不变。您应该尝试Maphttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

Map对象保存键值对,并记住键的原始插入顺序。

答案 1 :(得分:0)

parDetails.push({code, name, dob, gender, health});

在这一行中,您正在将JavaScript Object推送到数组。

对象是键值对,并且未定义键显示的顺序。当您执行{a}时,它与{a: a}相同。

例如,

var a = 5
var b = {a} // Implicitly it is doing b = {a: 5}
console.log(b.a) // To access the value

您不能依赖按键的顺序。