【问题标题】:Is it possible in javascript to pluck array based on it's contents?javascript 中是否可以根据其内容提取数组?
【发布时间】:2019-01-27 03:50:13
【问题描述】:

我有一个捕获视频、照片、音频和文本数据的表单数据。这些字段的数量是动态的,因此我可以有多个视频、音频字段等,这会导致表单在提交时崩溃或变得太慢。我目前正在通过没有 ajax 的普通表单操作提交进行提交。

我想修改行为,这样我就可以一次提交一个请求的表单字段,然后我可以向客户端显示类似这样的进度。

Basic information has been saved.
Audio 1 uploaded.
Video 2 uploaded.
Video 3 currently uploading ...
Video 4 pending.
Audio 5 pending.

这是我运行form.serializeArray() 时表单数据的样子

0: {name: "utf8", value: "✓"}
1: {name: "authenticity_token", value: "token data here"}
2: {name: "data[name]", value: "a"}
3: {name: "response[100]", value: "data:video/webm;base64,...."}
4: {name: "response[101]", value: "text data here"}
5: {name: "privacy_policy", value: "1"}

现在我想为一个单独的 Ajax 表单请求截断这个数组,比如 ff:

请求 1 - 基本信息

0: {name: "utf8", value: "✓"}
1: {name: "authenticity_token", value: "token data here"}
2: {name: "data[name]", value: "a"}

请求 2 - 视频数据

0: {name: "utf8", value: "✓"}
1: {name: "authenticity_token", value: "token data here"}
2: {name: "response[100]", value: "data:video/webm;base64,...."}

请求 3 - 文本数据

0: {name: "utf8", value: "✓"}
1: {name: "authenticity_token", value: "token data here"}
2: {name: "response[101]", value: "text data here"}

现在我想知道javascript中是否有内置方法来实现这种切分数组的方式。就像是 basic_info = formdata.remove(name, 'response').

还是没有?我需要通过循环遍历这个数组来手动完成吗?

谢谢

【问题讨论】:

    标签: javascript jquery ajax ruby-on-rails-5


    【解决方案1】:

    首先取出您希望出现在每个数组中的对象,然后.map 其余的对象创建一个新数组,每个新数组项都是包含这些对象和被迭代项的子数组:

    const input = [
      {name: "utf8", value: "✓"},
      {name: "authenticity_token", value: "token data here"},
      {name: "data[name]", value: "a"},
      {name: "response[100]", value: "data:video/webm;base64,...."},
      {name: "response[101]", value: "text data here"},
      {name: "privacy_policy", value: "1"}
    ];
    const [item1, item2, ...rest] = input;
    const output = rest.map(item3 => [item1, item2, item3]);
    console.log(output);

    如果您不想要privacy_policy,只需先从input 获取pop()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多