我在更换空间时遇到了一些问题 这是我的代码
var getTags = function(video_tagslist)
{
var commas = _.allOccurrences(video_tagslist, ',');
if (!_.array(commas))
{
// goback?
return;
}
var tagList = [];
for (var i = 0; i < commas.length; i++)
{
var tag = "";
if (i == 0) {
tag = video_tagslist.substring(0, commas[i]);
} else if (i < commas.length-1) {
tag = video_tagslist.substring(commas[i-1]+1, commas[i]);
} else {
tag = video_tagslist.substring(commas[i]+1);
}
tag = _.trim(tag);
tagList.push(tag);
};
return tagList;
}
allOccurrences()是一个可以返回video_taglist中所有逗号索引的函数。
但是当我测试它时,它总是缺少一些标签。 例如,如果我给这样的字符串=“tag5,tag8,tag9,tag12,tag7”。 结果出来的是[“tag5”,“tag8”,“tag9”,“tag7”]。总是错过最后一个标签。所以在这种情况下,tag12丢失了。
我想知道for循环中有什么问题,有人可以帮我解决吗?
这是alloccurrences函数
var allOccurrences = function(list,value){ var me =“Utils :: allOccurrences”;
if (!utils.array(list) && !utils.string(list)) {
log.error(me, "Given list is not an array or string");
return null;
}
if (utils.string(list) && !utils.string(value)) {
log.error(me, "Unable to search for a non string value in a string");
return null;
}
if (utils.string(list) && utils.string(value) && utils.empty(value)) {
log.warn(me, "Unable to search for an empty string in a string");
return [];
}
var startIndex = 0;
var index = -1;
var indices = [];
var listLen = list.length;
while ((index = list.indexOf(value, startIndex)) > -1) {
indices.push(index);
startIndex = index + 1;
}
return indices;
};
答案 0 :(得分:0)
为什么不使用javascript split功能? http://www.w3schools.com/jsref/jsref_split.asp
var array =(&#34; tag5,tag8,tag9,tag12,tag7&#34;)。split(&#34;,&#34;);
答案 1 :(得分:0)
是_下划线库?
这个功能似乎过于复杂。您想将逗号分隔的标记字符串转换为字符串数组,但是修剪了空格?
var getTags = function(video_tagslist) {
var tagList = = video_tagslist.split(',');
for(var i=0; i<tagList.length; i++) {
tagList[i] = _.trim(tagList[i]);
}
return tagList;
}
答案 2 :(得分:0)
逗号的数量始终比项目数少一个。由于您循环使用逗号计数,因此结果总是比项目数少一个。 if语句的逻辑意味着你正在丢失最后一个项目。
你应该修改你的for循环以转到&lt; = commas.length,然后中间if转到i&lt; commas.length,最后的其他内容转到tag = video_tagslist.substring(逗号[i-1] +1);
for (var i = 0; i <= commas.length; i++) {
var tag = "";
if (i == 0) {
tag = video_tagslist.substring(0, commas[i]);
} else if (i < commas.length) {
tag = video_tagslist.substring(commas[i-1]+1, commas[i]);
} else {
tag = video_tagslist.substring(commas[i-1]+1);
}
tag = _.trim(tag);
tagList.push(tag);
};
这完全基于allOccurrences返回的假设。