我正在向我的一个客户端编写JavaScript插件,在此我需要生成一系列字符串,如“1,2,D,3,4”/“1,D,2,3,4,5,6” 。长度可以是n个数字。 “D”位置存储在一个单独的字符串中,如2,4。在这里,我们希望生成如下所示的长度
String = 1,2,3,4,5 D位置:2,4 最终结果应为:1,D,2,D,3
我试过的东西,
var deletedString = "2,4"
var Values = "1,2,3,4,5,6";
var lengthFromValues = SplitString_ToArray(Values).length;
var deletedArray = splitString_ToArray(deletedString);
var temp_arr = [];
for(var i = 1; i <= lengthFromValues; i++) {
if(deletedArray[i-1] > 0) {
temp_arr.push("D");
} else temp_arr.push(i);
}
alert(temp_arr.toString());
注意:SplitString_ToArray函数是一个自编写的函数,它将(拆分)字符串转换为数组。
有人会帮助我吗?
答案 0 :(得分:1)
检查一下,我已经改变了一点逻辑。实际上,您可以使用deletedString
值替换转换为数组的Values
中的值,然后将数组放回字符串。 jsFiddle
var deletedString = "2,4"
var Values = "1,2,3,4,5,6";
var deletedArray = SplitString_ToArray(deletedString);
var valuesArray = SplitString_ToArray(Values);
var finalLength = valuesArray.length;
for (i=0; i< deletedArray.length; i++){
console.log(deletedArray[i]);
var idxToReplace = parseInt(deletedArray[i]-1); // substract 1, because your indexes are 1-based
valuesArray.splice(idxToReplace,0,'D');
}
// back to string
valuesArray = valuesArray.slice(0, finalLength);
var result = valuesArray.join();
alert(result);
function SplitString_ToArray(inString){
var result = inString.split(',');
console.log(result);
return result;
}
答案 1 :(得分:0)
使用forEach循环,应该这样做:
var deletedString = "2,4";
var Values = "1,2,3,4,5,6";
var toDelete = deletedString.split(','),
allValues = Values.split(','),
length = allValues.length;
toDelete.sort(function(a, b) {return a - b;});
toDelete.forEach(function(position) {
allValues.splice(parseInt(position) - 1, 0, 'D');
});
var newValues = allValues.splice(0, length).join();
alert(newValues);
答案 2 :(得分:0)
var deletedString = "2,4"; /* Sort the values */
var Values = "1,2,3,4,5,6";
var allValues = Values.split(','),
length = allValues.length;
deletedString.split(',').forEach(function(position) {
allValues.splice(parseInt(position) - 1, 0, 'D');
});
var newValues = allValues.splice(0, length).join();
alert(newValues);