从数组中删除文本

时间:2012-06-06 15:04:20

标签: javascript jquery

我有以下脚本有效:

classes = $(this).attr("class").split('_');

如果$(this)的班级是:

class="billed_department_employee_client_code"

最终结果如下:

["billed", "department", "employee", "client", "code"] 

这正是我想要的,因为它允许我做这样的事情

console.log( classes[0] );
console.log( classes[1] );
console.log( classes[2] );
console.log( classes[3] );

是否可以从classes中删除单个值并将其余值移回?

例如,

如果classes包含department,请将其删除。所以,如果它看起来像这样:

["billed", "department", "employee", "client", "code"] 

应该成为:

["billed", "employee", "client", "code"] 

如何做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用splice()方法。

classes.splice(1, 1);

将从索引1(第一个参数)开始删除1个项目(第二个参数)。如果您不知道索引,可以使用indexOf()来查找索引。

某些浏览器不支持indexOf(),因此您可以使用MDN中的脚本来使用它。您还需要检查以确保indexOf()没有返回-1(未找到),因为将索引的负参数传递到splice()将导致它从末尾删除项目数组。

答案 1 :(得分:1)

是。可以办到。这样:

var c = ["billed", "department", "employee", "client", "code"];
c.splice( c.indexOf('department'), 1); // will remove 'department' from the array.
c.join("_"); // will return "billed_employee_client_code"

答案 2 :(得分:0)

如果您使用的是相对较新的浏览器,则可以使用spliceindexOf(您可以随时为其余浏览器应用填充程序)。所以:

var pos = classes.indexOf("department");

if (pos > -1) {
    classes.splice(pos, 1);
}

$(this).attr("class", classes.join("_"));