jquery 将中的...连接为单个字符串

2izufjch  于 2023-01-16  发布在  jQuery
关注(0)|答案(3)|浏览(160)

我有一个URL参数的对象,最初是用这个方法附加到表单上的,但是我试图调整它,以便创建一个从输入的每个值连接到then的单个字符串。
我这里有这样的代码,它创建输入并将它们添加到表单的顶部:

for (property in parameters) {
    $('<input>', {
        type: 'hidden',
        id: `${property}`,
        class: 'urlparameter',
        name: `${property}`,
        value: `${property}: ${parameters[property]}`
     }).prependTo('form');
}

这段代码从我当前使用的测试URL创建了这个输入:

<input type="hidden" id="utm_content" class="urlparameter" name="utm_content" value="utm_content: comm">
<input type="hidden" id="utm_medium" class="urlparameter" name="utm_medium" value="utm_medium: email">
<input type="hidden" id="utm_source" class="urlparameter" name="utm_source" value="utm_source: sig">

从这里开始,我尝试使用类urlparameter遍历所有输入,获取值并将其附加到单个字符串的前一个输入值上。现在我只是为了测试而尝试使用console.log记录它们。无论我做什么,它总是单独列出它们,或者我破坏了语法,不知道如何修复它。
唯一接近的方法是:

var inputs = $(".urlparameter");
for(var i = 0; i < inputs.length; i++){
    let inputvalue = $(inputs[i]).val();
    console.log(inputvalue + ",");
}

这将创建以下内容

utm_内容:通讯,
utm_medium:电子邮件,
UTM_源:签名,

我想要的是:utm_内容:通信,utm_介质:电子邮件,utm_source:签署,
如何让它们都迭代并添加到一行中的单个字符串?

ppcbkaq5

ppcbkaq51#

使用.map().join()

console.log(inputs.map((i, el) => el.value).get().join(','));
0md85ypi

0md85ypi2#

可以使用.map获取所有值,转换为数组,然后调用Array#join

let res = $(".urlparameter").map((i, el) => $(el).val()).toArray().join(', ');
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="hidden" id="utm_content" class="urlparameter" name="utm_content" value="utm_content: comm">
<input type="hidden" id="utm_medium" class="urlparameter" name="utm_medium" value="utm_medium: email">
<input type="hidden" id="utm_source" class="urlparameter" name="utm_source" value="utm_source: sig">
5ssjco0h

5ssjco0h3#

我建议使用reduce,这是JavaScript版本的累加器。

console.log(
Array.prototype.reduce.call($('input.urlparameter'),(p,v) => p + v.value + ', ',"")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="hidden" id="utm_content" class="urlparameter" name="utm_content" value="utm_content: comm">
<input type="hidden" id="utm_medium" class="urlparameter" name="utm_medium" value="utm_medium: email">
<input type="hidden" id="utm_source" class="urlparameter" name="utm_source" value="utm_source: sig">

相关问题