【问题标题】:How to check if a Javascript object contains an array as a value for an attribute?如何检查 Javascript 对象是否包含一个数组作为属性的值?
【发布时间】:2018-06-09 20:41:28
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: javascript arrays forms handlebars.js


    【解决方案1】:

    您可以使用instanceoftypeof 运算符:

    检查它是否是一个数组:

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

    检查是否为字符串:

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

    【讨论】:

      【解决方案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);
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2021-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-02
          • 1970-01-01
          • 2023-03-30
          相关资源
          最近更新 更多