0

我有一个带有一些值的对象。我想删除部分值,同时将剩余值添加到新变量中。这是我到目前为止所拥有的:

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......

4

4 回答 4

2
SelectedSubscriptionIds.replace(/\(Products\)/g, "").split(",")
于 2013-08-20T11:29:10.610 回答
1

split() 函数输出一个项目数组。不要通过“[0]”选择第一项,而是将整个数组分配给一个变量并循环遍历该变量,格式如下:

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

您将遇到的一个问题是您的源字符串的格式为“Id(Type),Id(Type)”。仅拆分“(类型)”将在项目中留下逗号,因此您剥离的项目看起来像“320151”和“,320145”。确保您包含逗号(并确保您的源字符串末尾也有逗号,否则您的最后一项将不匹配拆分条件并且仍会显示“Id(Type)”。

所以你的代码看起来像:

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
}
于 2013-08-20T11:49:38.570 回答
0
foreach id in StrippedSubscriptionIds

Console.log(id);

Next
于 2013-08-20T11:28:09.147 回答
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(",");
于 2013-08-20T11:28:41.373 回答