jquery malipulate一个子数组,并使用每个/ map返回一个新数组

我有这个字符串的forms

ItemName1:Rate1:Tax1_ItemName2:Rate2:Tax2:_ItemName3:Rate3:Tax3_ItemName4:Rate4:Tax4 (依此类推,直至第25项)。

我要做的是,当这个字符串被_分割时,用户将传递一个索引(比方说2)抓取该索引处的项目。 如果index是2,我会得到子串ItemName3:Rate3:Tax3 。 用户将传递的另一件事是3个args,表示newItemnewRatenewTax ,然后我必须用这些新值替换在该特定索引处找到的这些旧项返回新字符串。 也许一个例子可以说清楚

 var itemList=ItemName1:Rate1:Tax1_ItemName2:Rate2:Tax2:_ItemName3:Rate3:Tax3_ItemName4:Rate4:Tax4 

用户传递参数, 2, Denim Jeans, 399.00, 14.34
这必须替换原始的itemList并返回

 ItemName1:Rate1:Tax1_ItemName2:Rate2:Tax2:_Denim Jeans:399.00:14.34_ItemName4:Rate4:Tax4 

(希望我明白了)。
我知道最简单的方法是首先将itemList分割为_然后分配给定索引,拆分:然后替换这些项,然后使用for循环创建一个新字符串,然后返回该新字符串。 但似乎有很多工作要做。 有没有一种简单的方法可以通过使用.each()和/或.map() ,虽然可能在for ,我不介意!

你的意思是这样的吗?

 var items = str.split('_').map(function(v){ return v.split(':') }); 

这将生成一个数组:

 [ ["ItemName1","Rate1","Tax1"], ["ItemName2","Rate2","Tax2"], ["ItemName3","Rate3","Tax3"], ["ItemName4","Rate4","Tax4"] ] 

演示: http //jsfiddle.net/elclanrs/7uVDM/