开发者问题收集

将变量推送到数组会返回未定义的结果

2018-05-02
1045

解决了,谢谢!我需要指定索引。

我正尝试将一组变量从用户输入推送到数组中。 不使用推送,它工作正常;

var inputStart = addAppointment.inputStart.value;
var inputEnd = addAppointment.inputEnd.value;
var appointmentArr = [];
appointmentArr = {start:inputStart, end:inputEnd};
document.write(appointmentArr.start);
document.write(appointmentArr.end);

但是,当我尝试推送变量时,它返回未定义;

var inputStart = addAppointment.inputStart.value;
var inputEnd = addAppointment.inputEnd.value;
var appointmentArr = [];
appointmentArr.push({start:inputStart, end:inputEnd});
document.write(appointmentArr.start);
document.write(appointmentArr.end);

有人能解释为什么会发生这种情况吗? 据我所知,我需要使用推送,因为我最终希望每次用户输入数据时都创建一个新的、填充的索引号,因此非常感谢任何帮助。 提前致谢

3个回答

您正在访问数组。 因此,document.write 部分应如下所示

document.write(appointmentArr[0].start);
document.write(appointmentArr[0].end);
Pajri Aprilio
2018-05-02

由于 appointmentArr 是一个数组,因此您应首先使用 appointmentArr[0] 来访问 数组 的第一个 元素

推送值后, appointmentArr 变为 [{start:inputStart, end:inputEnd}]

由于它是一个 数组 ,因此您 无法直接访问对象键 ,您必须使用 特定索引元素 ,然后使用 appointmentArr[index] 访问它们

var inputStart = 'inputStart';
    var inputEnd = 'inputEnd';
    var appointmentArr = [];
    appointmentArr.push({start:inputStart, end:inputEnd});
    document.write(appointmentArr[0].start + ' ');
    document.write(appointmentArr[0].end);

请运行上述代码片段

Sravan
2018-05-02

您将变量重新分配为 Object。

var appointmentArr = [];
appointmentArr = {start:inputStart, end:inputEnd};

此代码将 appointmentArrArray [] 覆盖为 Object { start:inputStart, end:inputEnd }

在第二个代码中:

var appointmentArr = [];
appointmentArr.push({start:inputStart, end:inputEnd});

您将 appointmentArrArray [] 修改为 Array [ {start:inputStart, end:inputEnd} ]

因此,以下代码将按您希望的方式工作。

document.write(appointmentArr[0].start);
document.write(appointmentArr[0].end);
Isitea
2018-05-02