使这种字符串数组发生变化的最优雅方法是什么?

时间:2011-06-08 10:19:00

标签: javascript jquery

如果我有一个像:

这样的字符串数组
var myStrArr=['book-in-my-house',
              'chair-in-my-house',
              'bed-in-my-house',
              'TV-in-my-house'];

我想将 myStrArr 更改为 herStrArr ,如:

var herStrArr=['book-in-her-house',
              'chair-in-her-house',
              'bed-in-her-house',
              'TV-in-her-house'];

如上所述,请在每个字符串中将每个“my”更改为“her”。 在JavaScript中进行此更改的最优雅方法是什么?

4 个答案:

答案 0 :(得分:3)

除了循环之外别无他法。正如您在标签中指出的那样,您正在使用jQuery,您可以使用jQuery的$.map来提供帮助。从技术上讲,这不是最优雅的解决方案,而是最简单和最短的解决方案之一:

var herStrArr = $.map(myStrArr, function(str) {
    return str.replace('-my-', '-her-');
});

答案 1 :(得分:0)

您可以使用jQuery $.each函数。

var myStrArr=['book-in-my-house',
              'chair-in-my-house',
              'bed-in-my-house',
              'TV-in-my-house'];

$.each(myStrArr,function(i){ myStrArr[i] = myStrArr[i].replace('-my-','-her-');})

实例:http://jsfiddle.net/Xx5XM/

答案 2 :(得分:0)

你没有拥有来使用循环 - 如果你可以选择一个保证不包含在任何字符串中的字符。例如,使用"|"即可:

var herStrArr = myStrArr.join("|").replace(/\bmy\b/gi, "her").split("|");

删除“我的”这个词,我认为你的意思是:

book-in-my-house => book-in-house

如果是,那么:

var strArr = myStrArr.join("|").replace(/-my\b/gi, "").split("|");

答案 3 :(得分:0)

存储['book', 'chair', 'bed', 'TV'],然后您无需执行任何操作。