【问题标题】:JQuery - .map is not a functionJQuery - .map 不是函数
【发布时间】:2017-11-09 15:17:19
【问题描述】:

我有以下代码:

var fieldsJson = formBuilder.actions.getData('json', true);

console.log(fieldsJson);

var nameArr = fieldsJson.map(function (item) { return item.name });

但我不断收到错误:

fieldsJson.map is not a function

控制台清楚地显示 fieldsJson 是一个对象数组,如下所示:

[
  {
    "type": "text",
    "label": "Text Field",
    "className": "form-control",
    "name": "testfield",
    "subtype": "text",
    "customField": true
  },
  {
    "type": "text",
    "label": "Text Field",
    "className": "form-control",
    "name": "testfield",
    "subtype": "text",
    "customField": true
  }
]

那为什么地图函数会报错呢?

【问题讨论】:

  • 你确定这是一张地图而不是一个 JSON 字符串吗? console.log(typeof fieldsJson)
  • 如果 typeof(fieldsJson) 返回 'object' 它应该可以工作。你能在小提琴中重现错误吗?
  • fieldsJSON.length 呢?
  • @mikeb 你是对的,它是一个 json 字符串。如何将其转换为对象数组?

标签: jquery array.prototype.map


【解决方案1】:

如果fieldsJson是String,需要用JSON.parse解析:

var fieldsJson = formBuilder.actions.getData('json', true);

console.log(fieldsJson);

fieldsJson = JSON.parse(fieldsJson)
var nameArr = fieldsJson.map(function (item) { return item.name });

【讨论】:

    【解决方案2】:

    您几乎肯定会看到 JSON 字符串表示。这也将捕获任何格式错误的 json:

    try {
      JSON.parse(fieldsJson);
    } catch (e) {
      console.log(e);
    }
    

    JSON.parse() 的更多信息

    【讨论】:

    • 我认为值得指出的是,您的 JSON.parse(fieldsJson) 在这种情况下是无用的,因为它不会修改 fieldsJson 变量并且不会分配值...
    猜你喜欢
    • 2016-09-02
    • 2015-10-18
    • 2021-12-03
    • 2020-08-13
    • 2018-11-13
    • 2018-06-21
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多