我正在尝试从JavaScript对象中组装某个字符串并遇到一些问题。
我创建了一个接受对象的函数,并且应该返回字符串。初始对象如下所示:
var testObject = {
"Topics": ["Other", "New1"],
"Other": ["try this", "this also"]
};
我希望字符串吐出来:
"Topics~~Other|Topics~~New1|Other~~try this|Other~~this also"
以下是我现在所拥有的:
var testObject = {
"Topics": ["Other", "New1"],
"Other": ["try this", "this also"]
};
function transformObjectToString(activeFilters) {
var newString = "";
var checkFilterGroups = function(filterTopic) {
activeFilters[filterTopic].map(function(selectedFilter) {
var tempString = filterTopic + "~~" + selectedFilter + "|";
console.log("check string", tempString);
newString.concat(tempString);
});
}
for (var filterGroup in activeFilters) {
checkFilterGroups(filterGroup);
}
return newString;
}
console.log(transformObjectToString(testObject));

当我检查日志时,临时字符串似乎格式正确,但是,无论出于何种原因,concat
看起来都没有像我想象的那样工作。
答案 0 :(得分:4)
您应该只能使用 SpannableString hashText = new SpannableString("I just watched #StarWars and it was incredible. It's a #MustWatch #StarWars");
Matcher matcher = Pattern.compile("#([A-Za-z0-9_-]+)").matcher(hashText);
while (matcher.find())
{
hashText.setSpan(new ForegroundColorSpan(Color.parseColor("#000763")), matcher.start(), matcher.end(), 0);
String tag = matcher.group(0);
}
holder.caption.setText(hashText);
//I need to set an OnClick listener to all the Hashtags recognised
,因为这只是字符串连接。然后,你所要做的就是删除最后一个字符。这是一个改变https://jsfiddle.net/tfs98fxv/37/的JSFiddle。
答案 1 :(得分:1)
您可以使用.join('|')
var testObject = {
"Topics": ["Other", "New1"],
"Other": ["try this", "this also"]
};
function transformObjectToString(activeFilters) {
var strings = [];
var checkFilterGroups = function(filterTopic) {
activeFilters[filterTopic].map(function(selectedFilter) {
var tempString = filterTopic + "~~" + selectedFilter;
strings.push(tempString);
});
}
for (var filterGroup in activeFilters) {
checkFilterGroups(filterGroup);
}
return strings.join('|');
}
console.log(transformObjectToString(testObject));

答案 2 :(得分:1)
newString = newString.concat(tempString);
这也有效。
编辑:这是如何工作的,首先将newString设置为null,因此在第一次循环时为null + tempstring,然后将newSting设置为值,在第二次循环时设置值+ tempString,依此类推。最后,你将在一个变量中使用连接的字符串,然后返回。
编辑:编辑: 还有@jfriend00在评论中说的,同上
.concat()返回一个新字符串,所以newString.concat(tempString);不是 完成任何事情,因为你没有将结果分配给 newString。请记住,Javascript中的字符串是不可变的,所以任何 修改总是会创建一个新字符串