У нас есть несколько записей, каждая запись имеет список активов. Список советов состоит из нескольких имен и сайтов клиентов (имя-сайт, имя-сайт_2, имя2-сайт_3, имя3-сайт_4).JavaScript String split()
Я пытаюсь разбить список активов, чтобы в итоге было два списка, одно из всех имен и один из всех сайтов (я хочу показать только то, что уникально в каждом списке). Я раскалываюсь в запятой, а затем снова делюсь на дефис
Что я создал ниже, но недавно я столкнулся с некоторыми комбациями на клиентском сайте, которые имеют дополнительный дефис, что нарушает мое решение (я изначально разделите строку запятой, а затем разделите подстроки на дефис). Чтобы добавить еще одну морщину, дополнительный дефис не всегда находится в одном и том же месте, в зависимости от категории, это может быть первый дефис (в имени клиента) или второй дефис (на сайте), который должен быть проигнорирован, к счастью, это в соответствии с категорией (если категория == «животные»).
Для животных категории, если есть два дефиса, мне нужно игнорировать первое.
Для категории фрукты, если есть два дефиса, мне нужно игнорировать второй.
Любые идеи?
Примеры списков активов: категория == «животные» если есть два дефиса, мне нужно разделить на второй. Списка_Цифровых_Объектов = «рыба-знак, кот-джим, сине-собака-генри, красная птица-счет, зеленовато-змей-Лари»
категории == «фрукты» , если есть два дефиса, мне нужно раскол в первом. Списка_Цифровых_Объектов = "известково-генри, лимонно-Сюзан, банан-боб-Нелсон, яблочно-рик-Джоунс, ананас-сэм-кузнец"
Ниже мой код:
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])
}
}
не использовать split - использовать 'indexOf' и' lastIndexOf' (в сочетании с 'подстрокой') в зависимости от категории – Igor