是什么会导致闭包中的数组分配将数组转换为函数数组?

时间:2019-06-23 03:10:43

标签: javascript reactjs

修改

对于任何以为我要传递JSON.parse()数组/对象的人……我要传递一个字符串。我在控制台输出中加上了注释,以为这就是我所做的。还要检查屏幕显示以将obj.datanewData进行比较...如果我分配了一个,则相反的情况已损坏。

原始

所以我有这段代码摘录。随后进行的nx.Equip.op()调用是内部$ajax操作之后的操作。

我的问题是,当我将data成员(它是一个数组)分配给任何对象时……并通过this.setState({storagePayments: obj.data})this.state.storagePayments = obj.data进行设置。 ..当我登录到控制台时...表明它是一系列功能...而不是原始字段。如果我直接将JSON.parse(data).data登录到控制台...这将显示正确的数组。我已经尝试了各种各样的方法...例如将其复制到新的数组中...就像在例外中一样。无论我分配的是哪个函数,它都是函数数组,而相反的是正确的字段数组。

似乎是一个矛盾……不是我做错了什么……但我显然可能会缺少一些东西。在下面,当我登录obj.datanewData时,有一个控制台的片段,这是我在代码片段中明确将新元素推送到的数组。 newData显示为函数数组,而obj.data具有我需要的正确数组。

如果我除了将storagePayments设置为obj.data而不是newData以外,什么都不做...则obj.data成为函数数组...并且它们切换角色。起初我以为可能是React ...所以我分配给this.state.storagePayments,发生了同样的事情。更不用说怪异性还是在赋值之前记录的原始变量中……但是它总是与最终赋值的那个匹配。

enter image description here

nextPromise = nextPromise.then(() => {
  return nx.Equip.op({
    endpoint: '/data',
    method: 'GET',
    data: {
      data_type: Payment.data_type,
      response_type: 'all',
      filter_by: `HEX(payment_guid) IN (${storageGuids})`,
      start_index: 0,
      number_of_records: 1000000
    }
  }).then(data => {
    var obj = JSON.parse(data);
    var newData = [];
    for(var i = 0; i < obj.data.length; i++)
      newData.push(obj.data[i]);
    this.setState({storagePayments: newData});
  });
});

1 个答案:

答案 0 :(得分:1)

当对字符串进行操作并将其转换为对象/数组时,您正在传递JSON.parse()一个数组。您将不得不遍历数组并将索引数据传递给JSON.parse()。

JSON.parse() MDN