javascript - 在数组中查找字符串的多个实例并重新排序

标签 javascript arrays sorting

我的问题如下:我正在尝试按照下面代码段中“名称”变量中的格式获取数据,将字符串转换为数组,然后重新组织数组以使文本的顺序正确。我能够得到我放在一起的部分以正确排序名字和姓氏的第一个或最后一个实例,但我正在寻求有关如何处理多个名称的指导。下面的代码片段将以正确的顺序返回名字和姓氏的最后一个实例。此时,我只希望将数据作为正确排序的数组返回,例如

如果输入字符串是 names = "邦德、詹姆斯和类纳、布鲁斯";

处理后应返回:['James', 'Bond,', '&', 'Bruce', 'Banner,']

一如既往,我很感激能得到的所有帮助,提前致谢!

Array.prototype.move = function(from,to){
  this.splice(to,0,this.splice(from,1)[0]);
  return this;
};

var names ="Bond, James & Banner, Bruce";

var namesArr = names.split(' ');
var idx;

// search for a comma (only last names have commas with them)
for(var i = 0; i < namesArr.length; i++) {
  if(namesArr[i].indexOf(',') != -1) {
    idx = i;
  }
}
namesArr.move(idx, idx+1); 
console.log(namesArr);

最佳答案

你很接近,但这个解决方案应该适合你。基本上你需要在循环中更新并增加索引 i 来解释切换。否则,您最终会重新访问您切换的第一个姓氏。

Array.prototype.move = function(from,to){
  this.splice(to,0,this.splice(from,1)[0]);
  return this;
};

var names ="Bond, James & Banner, Bruce & Guy, Other";

var namesArr = names.split(' ');
var idx;

// search for a comma (only last names have commas with them)
for(var i = 0; i < namesArr.length; i++) {
  if(namesArr[i].indexOf(',') != -1) {
    namesArr.move(i, i+1);
    i++; 
  }
}

console.log(namesArr);

关于javascript - 在数组中查找字符串的多个实例并重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183617/

相关文章:

javascript - Angularjs promise 未在 Controller 中解决

Java CodingBat 数组列表

c++ - 使用 Qt 对 XML 文件进行排序

Java:使用 lambda 表达式对数组进行排序?

javascript - 使用 JavaScript 停止所有 HTML5 音频/视频

javascript - 标准化测验数据的问题

javascript - 结果取回 [object HTMLInputElement]

arrays - Swift 数组加入 EXC_BAD_ACCESS

c++ - 函数参数中的C++数组指针

python - 高级自定义排序