我有这个字符串:
var text1 = "Ferrari Mercedes Ferrari Android iPhone LG iPhone iOS";
//text1 could be anything
我有这些数组:
var cars = ['Toyota', 'BMW', 'Ferrari', 'Mercedes'];
var phones = ['Nokia', 'Samsung', 'LG', 'iPhone'];
// cars values are fixed, but number of array could be increased
我想将text1
中的每个单词替换为具有相同值的数组中的单词/值之一,例如:
text1
中的法拉利一词将与Cars
之一匹配,因此它将被 BMW 随机替换, 丰田,或梅赛德斯但不是法拉利,也不是phones
值之一。 (假设它被 BMW 随机替换)
第二个法拉利字也将替换为宝马
但text1
中的 Mercedes 字不得替换为 BMW 和 Mercedes
以及适用于text1
phones
字词的相同字词
我希望结果可能是这样的:
text1 = "BMW Toyota BMW Android Nokia Samsung Nokia iOS";
获得此功能的有效方法是什么?
答案 0 :(得分:2)
这是一种做法。
以下是代码:
var carOffset = Math.ceil(Math.random() * (cars.length-1));
var phoneOffset = Math.ceil(Math.random() * (phones.length -1));
var mapper = {};
for(var i = 0; i < cars.length; i++){
j = (i + carOffset) % cars.length;
mapper[cars[i]]=cars[j];
}
for(var i = 0; i < phones.length; i++){
j = (i + phoneOffset) % phones.length;
mapper[phones[i]]=phones[j];
}
var splitText = text1.split(' ');
var ansString = '';
var both = cars + phones;
for(var i = 0; i < splitText.length; i++){
var flag = 0;
for(var j = 0; j< both.length; j++){
if(splitText[i]===both[j]){
ansString += mapper[splitText[i]];
flag += 1;
}
}
if(flag === 0){
ansString += splitText[i];
}
ansString += ' ';
}
答案 1 :(得分:1)
我会使用这个工作流程:
希望这有帮助。