ajax成功返回一个逗号分隔的字符串(1,2,3),我将其拆分并映射以获取某些选择选项的.text()...像这样:
JS:
success:function(data){
console.log(data.added.allocatedTo);
var selectText;
var joinText;
var stringResult = data.added.allocatedTo;
var splitResult = stringResult.split(",").map(function(port) {
selectText = $('.select-portfolio option[value='+port+']').text();
joinText += selectText+',';
});
console.log(joinText);
}
以上内容在控制台中提供了以下内容:
控制台:
1,2,3
undefinedPortfolio Test 01,
undefinedPortfolio Test 01,Portfolio Test 02,
undefinedPortfolio Test 01,Portfolio Test 02,Portfolio Test 03,
...但我想要的是:
Portfolio Test 01, Portfolio Test 02, Portfolio Test 03
......我怎么能得到这个?
答案 0 :(得分:1)
.map
希望您从提供给它的函数内部返回一个值:
const joinText = stringResult.split(",").map(function(port) {
return $('.select-portfolio option[value=' + port + ']').text();
});
console.log(joinText);
(您目前正在使用.map
,例如forEach
,这不适合您要实现的目标)
答案 1 :(得分:1)
数组上的map
方法使用给定函数将新数组返回到" map"该数组中的元素(值)到结果数组中的新元素(值)。
您可以在数组上使用join
方法来反转拆分。
所以你想要的是这个:
const joinText = stringResult.split(",")
.map(port => $('.select-portfolio option[value=' + port + ']').text())
.join(", ");
console.log(joinText);
答案 2 :(得分:0)
显然,您没有将joinText
初始化为空字符串。只需将其声明为var
即可将其值初始化为undefined
。当您向其添加字符串时,会将其转换为字符串"undefined"
,因此您现在拥有"undefined" + "Portfolio Test 01,"
。
要修复,您可以在声明时初始化它:
var joinText = '';
**编辑:其他答案是正确的,因为您使用.map
方法作为.forEach
或for
循环;但是,我只是指出将undefined
文本放在字符串输出前面的内容。