gpt4 book ai didi

javascript - 如何在 Javascript 对象中动态引用变量键名称?

转载 作者:行者123 更新时间:2023-11-28 14:59:41 24 4
gpt4 key购买 nike

我有一个名为 data 的数组,其中包含如下对象:

[{"timeslot":"6am-7am","Monday":5},{"timeslot":"7am-8am","Monday":0},{"timeslot":"8am-9am","Monday":10}]

每个对象包含两个键值对。我需要创建两个新数组:

  • 一个数组,时隙,包含与“时隙”键关联的每个值
  • 一个数组,numUsers,包含与“Monday”键关联的每个整数值

这是我的 JavaScript:

var timeslots = [];
var numUsers = [];
var keys = Object.keys(data[0]);
var today = keys[1];


for(var i in data) {
timeslots.push(data[i].timeslot);
numUsers.push(data[i].today);
}

for 循环的第一行起作用,并返回以下时隙数组:

["6am-7am", "7am-8am", "8am-9am"]

但是,第二行返回一个未定义元素的数组。

我的问题是,data 数组中对象的第二个键值不同。每个对象将包含一周中的同一天,但这一天可以是“星期一”到“星期日”中的任何一天。

如何动态引用它?

最佳答案

您可以使用方括号表示法访问对象值,就像使用 i 一样。 :

numUsers.push(data[i][today]);

注意但是,您的代码有几个非常重要的问题,最终会给您带来错误。最明显的一个是您依赖于对象属性的顺序并使用 Object.keys 检索键数组。 ,将第二个键设置为 today 的值多变的。你的错误是在不同的系统和浏览器中像Object.keys(obj)[1]这样的代码可能会返回不同的结果,因为 JavaScript 中的对象属性没有顺序。另外,您不应该使用 for .. in语句来迭代数组,而是使用简单的 for (var i = 0, len = arr.length; i < len; i++)环形。最后,不要忘记,data数组可能包含零个项目,因此您的代码 data[0]会引发错误。我建议您重新考虑应用程序的业务逻辑,并可能重写它以使其更加可靠。

关于javascript - 如何在 Javascript 对象中动态引用变量键名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41558107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com