Javascript 如何为csv字符串的精确连续元素设置序列?

Javascript 如何为csv字符串的精确连续元素设置序列?,javascript,c#,Javascript,C#,我有一个字符串csv包含端口代码和位置经纬度。我使用这些值在googlemap上绘制标记 例如csv字符串: ANC|61.2181:149.9003, ANC|61.2181:149.9003, TLK|62.3209:150.1066, DNL|63.1148:151.1926, DNL|63.1148:151.1926, DNL|63.1148:151.1926, TLK|62.3209:150.1066, TLK|62.3209:150.1066, ALE|60.9543:149.

我有一个
字符串
csv
包含端口代码和位置经纬度。我使用这些值在
googlemap
上绘制标记

例如csv字符串:

ANC|61.2181:149.9003,   
ANC|61.2181:149.9003,
TLK|62.3209:150.1066,
DNL|63.1148:151.1926,
DNL|63.1148:151.1926,
DNL|63.1148:151.1926,
TLK|62.3209:150.1066,
TLK|62.3209:150.1066,
ALE|60.9543:149.1599
ANC|61.2181:149.9003:1|2,
TLK|62.3209:150.1066:3,
DNL|63.1148:151.1926:4|5|6,
TLK|62.3209:150.1066:7|8,
ALE|60.9543:149.1599:9
我想为端口代码自动编号类似的端口代码序列,该序列用管道符号“|”分隔,端口代码与下一个元素完全连续

所需输出:

ANC|61.2181:149.9003,   
ANC|61.2181:149.9003,
TLK|62.3209:150.1066,
DNL|63.1148:151.1926,
DNL|63.1148:151.1926,
DNL|63.1148:151.1926,
TLK|62.3209:150.1066,
TLK|62.3209:150.1066,
ALE|60.9543:149.1599
ANC|61.2181:149.9003:1|2,
TLK|62.3209:150.1066:3,
DNL|63.1148:151.1926:4|5|6,
TLK|62.3209:150.1066:7|8,
ALE|60.9543:149.1599:9

任何使用
jquery/javascript/c#

的解决方案都可能有一种更简洁/更短的方法来实现这一点,但这里是使用javascript想到的第二种方法:

var input=“ANC 61.2181:149.9003,nANC 61.2181:149.9003,nTLK 62.3209:150.1066,nDNL 63.1148:151.1926,nDNL 63.1148:151.1926,nDNL 63.1148:151.1926,nTLK 62.3209:150.1066,nTLK 62.3209:150.1066,nTLK 62.3209:150.1066,NDNLE 60.1599”;
var output=input.split(“,\n”).REDUCT(函数(p,c,i,a){
如果(i==1)p+=“:1”;
返回p+(c==a[i-1]?“|”:”,\n“+c+”:”)+(i+1);
});

控制台日志(输出)您可以制作类似的东西

var csv='ANC | 61.2181:149.9003,nANC | 61.2181:149.9003,nTLK | 62.3209:150.1066,nDNL | 63.1148:151.1926,nDNL | 63.1148:151.1926,nTLK | 62.3209:150.1066,nTLK | 62.3209:150.1066,nALE 1249:150.1066,nALE 1248:151.1926,NTL60.1599',';
//计数条目:
var结果=[];
var j=-1;
var previous=“”;
对于(i=0;i这里是C#方法

public string[] data = { "ANC|61.2181:149.9003", "ANC|61.2181:149.9003", "TLK|62.3209:150.1066", "DNL|63.1148:151.1926", "DNL|63.1148:151.1926", "TLK|62.3209:150.1066", "TLK|62.3209:150.1066", "ALE|60.9543:149.1599", "DNL|63.1148:151.1926" };

int counter = 0;
var output = data.Select(x => new Tuple<string, int>(x, counter++))
           .GroupBy(x => x.Item1)
           .Select(h => h.Key + ":"+ string.Join("|", h.Select(x => x.Item2)));
public string[]data={“ANC | 61.2181:149.9003”、“ANC | 61.2181:149.9003”、“TLK | 62.3209:150.1066”、“DNL | 63.1148:151.1926”、“DNL | 63.1148:151.1926”、“TLK | 62.3209:150.1066”、“TLK | 62.3209:150.1066”、“ALE | 60.9543:149.1599”、“l 1248:151.1926”;
int计数器=0;
var output=data.Select(x=>newtuple(x,counter++)
.GroupBy(x=>x.Item1)
.Select(h=>h.Key+”:“+string.Join(“|”),h.Select(x=>x.Item2));

输出将是
ANC 61.2181:149.9003:0 | 1,TLK 62.3209:150.1066:2 | 5 | 6,DNL | 63.1148:151.1926:3 | 8,ALE | 60.9543:149.1599:7

这不符合要求!它一定是类似于ANC | 61.2181:149.9003:0 | 1,。。。在设置顺序之前,请注意冒号(:),但我仍然感谢您的努力和时间来帮助我:)@SHEKHARSHETE np,简单地用冒号更改第一个Deliminer。答:更新请选择完美@A.T.!:)简单易懂。。!感谢您的帮助!:)