为什么在有's没有在Javascript中定义集合
Why does push not work when there's no collection defined in Javascript?
我有以下代码:
var maxNum = formData.answers = null ? Math.max.apply(Math, formData.answers.map(function (o) { return o.number; })) : 0;
var emptyAnswer = {
"number": maxNum + 1,
"correct": false,
"name": "",
"notes": "",
"topicId": formData.topicId
};
formData.answers.push(emptyAnswer);
如果我已经有一个答案集合作为formData的一部分,则该代码有效,但如果formData.answers为null,则它不起作用。它给出了一个信息:
TypeError: Object 0 has no method 'push'
at Object.$scope.modalAddAnswer (http://127.0.0.1:81/Content/app/admin/controllers/question-controller.js:113:30)
如果目前还没有定义答案,有没有一种方法可以重构它使其工作。
您在以下语句中将0分配给formData.answers
:
var maxNum = formData.answers = null ? Math.max.apply(Math, formData.answers.map(function (o) { return o.number; })) : 0;
我的猜测是,你试图将formData.answers
与null
进行比较。您希望使用!=
(或!==
)而不是第二个=
:
var maxNum = formData.answers != null ? Math.max.apply(Math, formData.answers.map(function (o) { return o.number; })) : 0;
这解释了关于"对象0没有方法"push"的奇怪消息。但是,请注意,如果formData.answers
是null
,那么您的push
仍然不起作用;您需要将CCD_ 10设置为一个空数组。我建议这个代码:
var maxNum = 0;
if (formData.answers == null) {
formData.answers = [];
} else if (formData.answers.length > 0) {
maxNum = Math.max.apply(Math,
formData.answers.map(function (o) { return o.number; }));
}
formData.answers.push(emptyAnswer);
只需检查密钥是否存在,如果不存在,则创建它:
if (!formData.hasOwnProperty("answerswers") || formData.answers === null) {
formData.answers = [];
}
初始化变量如下:
formData.answers = new Array();
然后记得永远把它当作一个数组。
相关文章:
- 如何使用javascript var引用Mongo DB集合's字段
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 如何使用 javascript 从 Web 服务重新加载项目集合
- 引用Javascript中的索引集合
- javascript按集合中的标题搜索节点并返回
- 可变键控集合在javascript中意味着什么
- JavaScript:for循环中的集合为null
- 如何在Javascript中获得真实的地图和集合
- 如何使用javascript将两个dom元素集合合并到第三个集合中
- 对JavaScript集合中的对象进行排序
- 使用lodash javascript筛选子集合
- JavaScript 集合验证不适用于 Struts 2 标记
- sharepoint Javascript 集合尚未初始化
- 遍历一个通用的 JavaScript 集合
- 迭代 JavaScript 集合并添加排序顺序
- Javascript集合方法
- 使用生成的ID创建JavaScript集合的最具性能的方法
- 年和月的Javascript集合
- 显示Javascript集合中的元素
- 在javascript集合中分组(按年份)和求和