替换对象数组中的单词(JavaScript)

时间:2018-07-12 18:42:46

标签: javascript arrays replace

我想替换一个字符串/多行的多个单词。关键字和替换词由对象数组组成。 它完美适用于数组中的第一个对象,但不适用于数组中的其他对象。

var aString = 'I have many animals, for Example a Dog, a little Mice, a Kangaroo I´ve got as well, and I even have got a Cat.';

var Array = new Array();
array[0].firstanimal = 'Dog';
array[0].secondanimal = 'Cat';
array[1].firstanimal = 'Mice';
array[1].secondanimal = 'Kangaroo';


function replaceSomething(aString) {
	for (i = 0; i < array.length; i++)  {
		mynewString = aString.replace(array[i].firstanimal, array[i].secondanimal);
	}
	return mynewString;
	}

2 个答案:

答案 0 :(得分:0)

您将不得不在第二次迭代中对替换后的字符串returnThis调用replace,依此类推,或者只是对传递的字符串进行突变:

function replaceDescription(aString) {
    for (i = 0; i < arrayOfObjects.length; i++) {
        aString = aString.replace(arrayOfObjects[i].item1, anyfunction(arrayOfObjects[i].item2).length).replace(arrayOfObjects[i].item3, anotherfunction(anyfunction(arrayOfObjects[i].item2)));
    }
    return aString;
}

然后,您还摆脱了该隐式全局(错误!)变量。

答案 1 :(得分:0)

这里是一个例子,我不知道您的带有关键字/替换的对象是什么样的,所以我做了我自己的对象。

var text = 'This is my text that i want to replace keywords with values in';
var map = [ {keyword: 'text', replacement: 'butts'},
						{keyword: 'want', replacement: 'butts'}]
            
map.forEach(function(value, index){
	text = text.replace(new RegExp(value.keyword, 'g'), value.replacement);
});

console.log(text);