在url中排出数组值

时间:2017-06-07 17:35:46

标签: javascript jquery arrays

数组

var array = [
    {
        item: "abcd1234",
        data: "something"
    },
    {
        item: "4321dcba",
        data: "something"
    },
];

数组长度可以是1到10

我正在为所有这些项目发出http请求。

array.forEach(function(item) {

    var url = "www.something.com?id=" + item.item;

    //making request

});

现在我需要每个阵列1到10个请求取决于数组长度。

假设我有10个阵列,其中包含10个元素。它的100个要求。

如果我像这样使用url

,我每个阵列只能提出1个请求

www.something.com?id=abcd1234&id2=4321dcba

如果我不知道有多少元素,我如何将所有数组值循环到网址?

3 个答案:

答案 0 :(得分:2)

使用数组样式的URL参数名称。大多数服务器端库和框架都会将这些库和框架收集到一个数组中(例如$_GET['id']将是PHP中的数组)。

您可以使用.map()返回所有参数的数组,并使用.join()将其与&相关联。



var array = [{
    item: "abcd1234",
    data: "something"
  },
  {
    item: "4321dcba",
    data: "something"
  },
];

var url = 'www.something.com?' +
  array.map(function(item) {
    return 'id[]=' + encodeURIComponent(item.item);
  }).join('&');

console.log(url);




答案 1 :(得分:1)

var url = "www.something.com?"+items.map((item,id)=>"id"+((id||-1)+1)+"="+item.item).join("&");

您可以将每个项目映射到其查询参数,然后使用& ...

加入

答案 2 :(得分:1)

您可以使用reduce()方法:

const array = [
  {
    item: "abcd1234",
    data: "something"
  },
  {
    item: "4321dcba",
    data: "something"
  }
];
const url = array.reduce(
  (acc, x, i) => acc + (i === 0 ? `?id=${x.item}` : `&id${i + 1}=${x.item}`),
  'www.something.com'
);
console.log(url);

如果您的数组看起来像["abcd1234", "4321dcba"],请尝试:

const array = ['abcd1234', '4321dcba'];
const url = array.reduce(
  (acc, x, i) => acc + (i === 0 ? `?id=${x}` : `&id${i + 1}=${x}`),
  'www.something.com'
);
console.log(url);