如何检查Javascript对象是否包含数组作为属性的值?

时间:2017-12-29 11:40:00

标签: javascript arrays forms handlebars.js

我有一个来自表单数据的对象(使用快速手柄的javascript),可以是以下之一:

object1 = { name: "Grade1", section: "A", courses: [ "Eng", "Math", "Sci"] }

OR

object2 = { name: "Grade1", section: "A", courses: "Sci" }

如何确定courses属性是包含数组还是单个值? 或者有没有办法将表单中的数据作为属性courses的数组始终发送(即使它是单个课程)?

感谢。

3 个答案:

答案 0 :(得分:3)

您可以使用instanceoftypeof运算符:

检查是否为数组:

if (object.courses instanceof Array) {
  ···
}

检查字符串是否为

if (typeof object.courses === 'string') {
  ···
}

答案 1 :(得分:2)

您还可以使用isArray方法。请注意documentation,它解释了为什么您可能希望使用此方法而不是instanceOf

  

检查Array个实例时,Array.isArray优先于instanceof,因为它适用于iframes

根据您的使用情况(假设您正在使用浏览器),您可能更喜欢这种情况,并且如果已经是一个数组,您可以将其作为数组发送。类似的东西:

var object1 = { name: "Grade1", section: "A", courses: [ "Eng", "Math", "Sci"] };
var object2 = { name: "Grade1", section: "A", courses: "Sci" };

console.log(object2.courses);

if (!Array.isArray(object2.courses)) {
    object2.courses = [object2.courses];
 }

 console.log(object2.courses);

答案 2 :(得分:-1)

您可以使用typeof检查object1.courses是数组还是字符串。

有些方法可以确保在收到数据时课程始终是一个数组。