加入2个字符串

时间:2014-11-06 22:32:21

标签: javascript string

我有一个城市和州的数据集,看起来像(城市:州,城市:州等)。我想得到一个输出(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

我哪里错了?

4 个答案:

答案 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'});

http://jsfiddle.net/716dv1gg/

您可以阅读有关JSON和for...in循环here on the MDM website的更多信息(这是一个经常使用它的好资源)。