Javascript结合数组列表

时间:2016-04-11 20:41:08

标签: javascript

我正在尝试将一组字符串组合成一个带衬里的变量

因此,例如,我希望最终结果呈现为:

"tag[]=sku_helloworld&tag[]=sku_bridesdark&tag[]=stuk_home"

这就是我现在所拥有的,而且我不确定如何将它们完全结合起来?

var productSku = $('.social-module').data('magento-sku'),
  str = productSku,
  skuList = str.split(',');

for (var i = 0; i < skuList.length; i++) {
  console.log("tag[]=" + skuList[i] + "&");
}

https://jsfiddle.net/tvdberf7/

7 个答案:

答案 0 :(得分:1)

您可以稍微简化一下:

var productSku = $('.social-module').data('magento-sku'),
  str = productSku,
  skuList = 'tag[]=' + str.split(',').join('&tag[]=');

请参阅updated JSFiddle

答案 1 :(得分:1)

您可以使用Array#map()Array#join()

&#13;
&#13;
var skuList = ['sku_helloworld', 'sku_bridesdark', 'stuk_home'],
    result = skuList.map(function (a) {
        return 'tag[]=' + a;
    }).join('&');

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

ES6

&#13;
&#13;
var skuList = ['sku_helloworld', 'sku_bridesdark', 'stuk_home'],
    result = skuList.map(a => 'tag[]=' + a).join('&');

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 2 :(得分:0)

将它放在一个字符串中,然后打印出来。

var productSku = $('.social-module').data('magento-sku'),
  str = productSku,
  skuList = str.split(',');
  var result = "";
for (var i = 0; i < skuList.length; i++) {
  result += "tag[]=" + skuList[i] + "&";
  console.log(result);
}

JSfiddle

答案 3 :(得分:0)

您可以使用reduce(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

skuList.reduce(function(a, b) { return a + "&tag[]=" + b }, "").substring(1)

substring负责删除第一个&

答案 4 :(得分:0)

您应该可以使用Array.join()方法来处理此问题,但是您需要明确添加第一个分隔符:

// Array.join will build a string using your delimiter '&tag[]=' between
// each of the items in the array
var result = 'tag[]=' + skuList.join('&tag[]=');

你可以see an example of this in action here

答案 5 :(得分:0)

您可以生成如下列表:

skuList = str.split(',').map(function(item) {return "tag[]=" + item}).join('&');
console.log(skuList);

答案 6 :(得分:0)

这是一个没有循环的单行:

'tag[]=' + productSku.split(',').join('&tag[]=')

var productSku = $('.social-module').data('magento-sku');

alert('tag[]=' + productSku.split(',').join('&tag[]='));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div data-magento-sku="sku_helloworld,sku_bridesdark,stuk_home" class="social-module"></div>