我有一个城市和州的数据集,看起来像(城市:州,城市:州等)。我想得到一个输出(SPAN:城市:州,SPAN:城市:州等)。基本上,只需在每个城市添加“SPAN:”:州项目。
我认为这会给我答案......
function test(link_list) {
for(var i in link_list)
console.log("SPAN:", link_list[i]);
}
test("123");;
产生“SPAN:1,SPAN:2,SPAN:3”
然而,当用我的数据替换“123”时(克利夫兰:俄亥俄州),我得到输出......
SPAN: c
SPAN: l
SPAN: e
SPAN: v
SPAN: e
SPAN: l
SPAN: a
SPAN: n
SPAN: d
SPAN: :
SPAN: o
SPAN: h
SPAN: i
SPAN: o
我哪里错了?
答案 0 :(得分:1)
如果您有机会更改数据传递给您的方式,您应该将每个city:state
放入一个像@Alex Linte这样的答案中。@ / p>
如果不是这种情况,那么您需要查看字符串并决定如何拆分它,以便循环遍历每个city:state
组。
你真的应该给我们一个数据的确切字符串。但如果它像我对你的问题所期望的那样,那就是这样的。
var input = 'cleveland:ohio, san diego:ca, los angeles:ca';
如果是这种情况,你只需要在,
上拆分字符串然后循环。这是代码。
var input = 'cleveland:ohio, san diego:ca, los angeles:ca';
function test( link_list ) {
var linkArr = link_list.split( ', ' );
for ( var i in linkArr ) {
console.log( 'SPAN:', linkArr[i] );
}
}
test( input );
编辑:我忘了告诉你为什么你的其他答案是错的。当你循环遍历字符串时,它基本上将字符串视为数组,并且该数组的每个部分都是字符串的一个字符。这就是为什么它像您所说的那样发布输出的原因。
干杯并坚持下去!
答案 1 :(得分:0)
将cleveland:ohio
作为数组传递:
test(['cleveland:ohio']);
以下代码:
test(['cleveland:ohio','newyork:newyork']);
应输出:
SPAN: cleveland:ohio
SPAN: newyork:newyork
答案 2 :(得分:0)
这是小提琴,所以你可以玩它,因为它更适合你:http://jsfiddle.net/ggkyfyvu/3/
考虑输入一个字符串:
var parseToString = function(input){
return input.split(", ").map(function(val){
return "SPAN: " + val + " ";
}).join();
};
var parseToArray = function(input){
return input.split(", ").map(function(val){
return "SPAN: " + val;
});
};
var data = "cleveland:ohio, austin:texas";
var resultString = parseToString(data);
var resultArray = parseToArray(data);
console.log(resultString); // outputs "SPAN:cleveland:ohio,SPAN:austin:texas"
console.log(resultArray); // outputs ["SPAN:cleveland:ohio", "SPAN:austin:texas"]
map是一个非常有用的函数,非常适合快速数组转换。但它不适用于 IE8 及以下版本。
我经常使用它,我有一个polyfills
的脚本如果您不想使用polyfills并且您确实关心旧浏览器,那么只需在输入上调用split(", ")
后遍历数组。
答案 3 :(得分:0)
所以你很幸运," 123"因为javascript中的所有内容都是一个对象,所以最新发生的事情是它将字符串的每个字母视为linked_list
中的值,并将其拆分并以span输出。
city:state, city:state
看起来你正在获得JSON个对象。如果它是json而不是括号,它应该用大括号{city:state, city:state}
包装。如果不是那么它应该是!
原样,你在正确的轨道上,但它应该是这样的:
function test(link_list) {
for(var i in link_list){
if(link_list.hasOwnProperty(i)){
console.log("SPAN:", i, ':', link_list[i]);
}
}
}
test({city:'state', city:'state'});
您可以阅读有关JSON和for...in
循环here on the MDM website的更多信息(这是一个经常使用它的好资源)。