2013-09-29 27 views
2

我想用逗号分隔所有项目的名称动态创建一个字符串。在JavaScript中追加相同的字符串变量时如何处理第一个字符不同?

var itemName = ''; 
for (var i=0; i < itemArray.length; i++) { 
    itemName = itemName+","+itemArray[i].name; 
} 

假设,我有3个项目的名称 - Shoe, Jeans & Shirt。我想变ITEMNAME保存为Shoe,Jeans,Shirt

下面是itemArray

[{"name":"shoe","size":"3","brand":"lee"},{"name":"Jeans","size":"5","brand":"le‌​e"}...] 

当我使用上面的代码会像这样,Shoe,Jeans,Shirt

什么是避免第一个逗号的有效方法是什么?

JavaScript中是否有类似于jstl中的${stat.first?'':','}的方法?

回答

-2

您需要添加,字符的第一个项目已经写入变量后,不写,字符的迭代数组的最后一个元素

itemArray = [ 
       { 
        "name" : "shoe", 
        "size" : "3", 
        "brand" : "lee" 
       }, { 
        "name" : "Jeans", 
        "size" : "5", 
        "brand" : "le‌​‌​e" 
       } 
       ]; 

var itemName = ''; 
var sSeparator = ','; 
var i; 
for(i=0; i<itemArray.length; i+=1){ 

    itemName += itemArray[i].name; 

    if(i < itemArray.length - 1){ 
     itemName += sSeparator; 
    } 
} 
+0

您可能想要包含原始代码中出现错误的解释 - 这有助于提高效率。 –

+1

加入和地图是为此。 –

5

使用Array.mapArray.join

注意:Array.map是ECMA5,但有polyfils可用。

的Javascript

var itemArray = [{ 
     name: "Shoe" 
    }, { 
     name: "Jeans" 
    }, { 
     name: "Shirt" 
    }], 
    itemName = itemArray.map(function (item) { 
     return item.name; 
    }).join(","); 

console.log(itemName); 

输出

Shoe,Jeans,Shirt 

jsfiddle

+0

itemArray如下 [{“name”:“shoe”;“size”:“3”;“brand”:“lee”},{“name”:“Jeans”;“size”:“5”; “brand”:“le e”} ...] –

+2

啊是的,我现在可以看到,在您的原始问题中不清楚,您应该包含该信息。 – Xotic750

+0

@RaheebM你的itemArray看起来不对......必须itemArray = [{ “名称”: “鞋”, “大小”: “3”, “品牌”: “李” },{ “名称”: “牛仔裤”, “大小”: “5”, “brand”:“le e” }]; – Bernhard

1

有解决这一问题的两个方面。

方式1:做你在做什么。只记得删除字符串的第一个字符:

function join(array, delimiter, name) { 
    var index = 0, length = array.length, string = ""; 
    while (index < length) string += delimiter + array[index++][name]; 
    return string.slice(1); 
} 

方式2:本质上讲,这解决方案相同的第一个。但是它利用mapjoin

function join(array, delimiter, name) { 
    return array.map(function (item) { 
     return item[name]; 
    }).join(delimiter); 
} 

第一种方式是比第二快。然而第二种方式更具可读性。无论哪种方式,您现在就可以通过简单地调用join如下做你想要什么:

join(itemArray, ",", "name"); 

希望有所帮助。

相关问题