将变量推送到数组会返回undefined

时间:2018-05-02 05:18:20

标签: javascript arrays push

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

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

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);

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

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);

任何人都可以解释为什么会这样吗? 据我所知,我需要使用push,因为我最终想在每次用户输入数据时创建一个新的,填充的索引号,所以非常感谢任何帮助。 提前致谢

3 个答案:

答案 0 :(得分:1)

由于appointmentArr是一个数组,您应该appointmentArr[0]访问element的第一个array

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

由于{<1}} 无法直接访问对象密钥,您必须使用 array ,然后才能使用{ {1}}

specific index element

请运行以上代码段

答案 1 :(得分:1)

您正在访问阵列。 因此,document.write部分应该是这样的

document.write(appointmentArr[0].start);
document.write(appointmentArr[0].end);

答案 2 :(得分:0)

您将变量重新指定为对象。

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

此代码会将appointmentArr的{​​{1}}覆盖为Array []

在第二个代码中:

Object { start:inputStart, end:inputEnd }

您可以将var appointmentArr = []; appointmentArr.push({start:inputStart, end:inputEnd}); appointmentArr修改为Array []

因此,以下代码可以按您的意愿工作。

Array [ {start:inputStart, end:inputEnd} ]