2013-08-20 2 views
0

У меня есть объект с некоторыми значениями. Я хотел бы удалить часть значения, добавив оставшееся значение в новую переменную. Это то, что я до сих пор:Использование split в массиве

var data = { 
    "selectedProducts": { 
     "selectedSubscriptionIds": "320151(Products),320145(Products)" 
    } 
}; 
var SelectedSubscriptionIds = data.selectedProducts.selectedSubscriptionIds; 
var StrippedSubscriptionIds = SelectedSubscriptionIds.split("(Products)")[0]; 

console.log(SelectedSubscriptionIds); //320151(Products),320145(Products) 
console.log(StrippedSubscriptionIds); //Returns "320151" only 

Переменная StrippedSubscriptionIds возвращает только первый раздели значение. Как сделать цикл по всем пунктам, избавляя их так, что только номера осталось - как 320151,320145 ...

+0

У вас есть индекс '0' в конце инструкции, которая возвращает первый элемент массива, удалите это, и t будет работать нормально. –

ответ

2
SelectedSubscriptionIds.replace(/\(Products\)/g, "").split(",") 
+0

Это действительно правильный ответ :) –

+0

@fguillen Это просто! Работает как шарм. Благодаря! – Meek

0

попробовать

var StrippedSubscriptionIds = SelectedSubscriptionIds.split("(Products),"); 
StrippedSubscriptionIds[-1] = StrippedSubscriptionIds[-1].substr(0, StrippedSubscriptionIds[-1].length - 10); 

и у вас есть массив.

Последняя строка кода исключает завершающую строку (Product).

в качестве альтернативы, использование:

var temp = SelectedSubscriptionIds.replace(/\(Products\)/g, ""); 
var StrippedSubscriptionIds = temp.split(","); 
1

Разделение() функция выводит массив элементов. Вместо того, чтобы выбрать первый пункт через «[0]», присвоить весь массив переменного и петлю над что, в формате:

for (var count = 0; count < maxCount; count++) { 
    // Action to be repeated here 
} 

Проблемы вы будете иметь это исходную строку в формате "Id (тип), Id (Type)". Разделение только на «(Тип)» оставит запятые в элементе, поэтому ваши разделенные элементы будут выглядеть как «320151» и «, 320145». Убедитесь, что вы включили запятую (и убедитесь, что в исходной строке есть запятая в конце, или ваш последний элемент не будет соответствовать условиям разделения, и все равно скажет «Id (Тип)».

Таким образом, ваш код будет выглядеть как:

var data = { 
    "selectedProducts": { 
     "selectedSubscriptionIds": "320151(Products),320145(Products)," 
    } 
}; 
var SelectedSubscriptionIds = data.selectedProducts.selectedSubscriptionIds; 
console.log(SelectedSubscriptionIds); //320151(Products),320145(Products), 

var subscriptionIdArray = SelectedSubscriptionIds.split("(Products),"); 

for (var i = 0, i < subscriptionIdArray.length; i++) { 
    var subscriptionId = subscriptionIdArray[i]; 
    console.log(subscriptionId); // 320151, then 320145 etc 
} 

Я не знаю, почему вы должны указать SubscriptionId как «Id (Type)», когда это уже внутри категории «selectedProducts» Если это чисто ради расщепления, то вы можете оставить. это и просто разделить на ","

var data = { 
    "selectedProducts": { 
     "selectedSubscriptionIds": "320151,320145" 
    } 
}; 
var SelectedSubscriptionIds = data.selectedProducts.selectedSubscriptionIds; 
console.log(SelectedSubscriptionIds); //320151,320145 

var subscriptionIdArray = SelectedSubscriptionIds.split(","); 

for (var i = 0, i < subscriptionIdArray.length; i++) { 
    var subscriptionId = subscriptionIdArray[i]; 
    console.log(subscriptionId); // 320151, then 320145 etc 
} 
Смежные вопросы