我们有多条记录,每条记录都有一个资产清单。 assest列表由多个客户端名称和站点组成(name-site,name-site_2,name2-site_3,name3-site_4)。
我试图拆分资产列表,最后得到两个列表,一个是所有名称中的一个,另一个是所有站点中的一个(我只想显示每个列表中的唯一名称) 。我在逗号处分裂,然后在连字符处再次拆分
我在下面创建的内容有效,但最近我遇到了一些带有额外连字符的客户端站点组合,这破坏了我的解决方案(我最初用逗号分割字符串然后拆分子字符串连字符)。要添加另一个皱纹,额外的连字符并不总是在同一个位置,具体取决于它可能是第一个连字符(在客户端名称中)或第二个连字符(在站点中)需要忽略的类别,幸运的是,这是按类别一致(如果类别=="动物")。
对于类别动物,如果有两个连字符,我需要忽略第一个。
对于类别水果,如果有两个连字符,我需要忽略第二个。
有什么想法吗?
示例资产列表: category ==" animals" 如果有两个连字符,我需要在第二个分开。 assetList ="鱼标,猫咪,蓝狗亨利,红鸟票据,绿蛇拉里"
category ==" fruit" 如果有两个连字符,我需要先拆分。 assetList =" lime-henry,lemon-susan,banana-bob-nelson,apple-rick-jones,pineapple-sam-smith"
以下是我的代码:
var assetList = "fish-mark, cat-jim, blue-dog-henry, red-bird-bill, green-snake-larry";
var count = (assetList.match(/-/g) || []).length;//counts the hyphens (client-siteId combo)
var splitObj = {};
var comboObj = {};
var clientObj = {};
var siteObj = {};
var mainSplitObj = {};
var allClient = '';
var allSite = '';
mainSplitObj = assetList.split(', ');
for (var i = 0; i < count; i++) {
splitObj["split"+i] = mainSplitObj[0+i]; //puts the client-siteID into a substring
comboObj["combo"+i] = splitObj["split"+i].split('-'); //splits the client-siteID at the dash
clientObj["client"+i] = comboObj["combo"+i][0]; //puts the client name in a substring
siteObj["site"+i] = comboObj["combo"+i][1]; //puts the siteid in a substring
allClient += clientObj["client"+i] +";"+ ' '; //cumulatively adds client substrings to allClient variable
allSite += siteObj["site"+i] +";" + ' '; //cumulatively adds site substrings to allSite variable
}
tempC = allClient.split(",")
uniqueClient = []
for (var i = 0; i < tempC.length; i++) {
isIn = 0
for (var j = 0; j < uniqueClient.length; j++) {
if (tempC[i] == uniqueClient[j]) {
isIn = 1
}
}
if (isIn == 0) {
uniqueClient.push(tempC[i])
}
}
tempS = allSite.split(",")
uniqueSite = []
for (var i = 0; i < tempS.length; i++) {
isIn = 0
for (var j = 0; j < uniqueSite.length; j++) {
if (tempS[i] == uniqueSite[j]) {
isIn = 1
}
}
if (isIn == 0) {
uniqueSite.push(tempS[i])
}
}
答案 0 :(得分:0)
这是一种使用indexOf和lastIndexOf的方法。它分裂在最后一个而不是第二个连字符,在你的情况下给你相同的结果。
// Split on first hyphen
var list = ["lime-henry", "lemon-susan", "banana-bob-nelson", "apple-rick-jones", "pineapple-sam-smith"];
for (var i = 0; i < list.length; i++) {
var delimiterIndex = list[i].indexOf("-");
var item = list[i];
var left = item.substring(0, delimiterIndex);
var right = item.substring(delimiterIndex + 1, item.length);
console.log(left, right);
}
/* outputs
* lime henry
* lemon susan
* banana bob-nelson
* apple rick-jones
* pineapple sam-smith
*/
// Split on last hyphen
var list = ["fish-mark", "cat-jim", "blue-dog-henry", "red-bird-bill", "green-snake-larry"];
for (var i = 0; i < list.length; i++) {
var delimiterIndex = list[i].lastIndexOf("-");
var item = list[i];
var left = item.substring(0, delimiterIndex);
var right = item.substring(delimiterIndex + 1, item.length);
console.log(left, right);
}
/* outputs
* fish mark
* cat jim
* blue-dog henry
* red-bird bill
* green-snake larry
*/