Javascript 从数组中的元素修改空白元素

Javascript 从数组中的元素修改空白元素,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有以下数组: arr1= ["avd befe, bla, bla, bla, bla", "cveve devev, bla, bla, bla, bla", "aava beve. cavbr, bla, bla, bla, bla", "feve gyhyh, bla, bla, bla, bla", "ibtbt, bla, bla, bla, bla"] 在我的示例中,我主要关注数组中的第一组字符。这些项目可以包括格式为“x”、“x y”(两组字符之间有一个空格)和“x y z”

我有以下数组:

arr1= ["avd befe, bla, bla, bla, bla", "cveve devev, bla, bla, bla, bla", "aava beve. cavbr, bla, bla, bla, bla", "feve gyhyh, bla, bla, bla, bla", "ibtbt, bla, bla, bla, bla"] 
在我的示例中,我主要关注数组中的第一组字符。这些项目可以包括格式为“x”、“x y”(两组字符之间有一个空格)和“x y z”(三组字符之间有两个空格)的项目


我想从第三组元素中删除y(以便“x y z”变为“x z”)。上面显示的arr1就是一个示例-我正在使用的数组有几百个条目。在上面的示例中,我希望“aava beve.cavbr”变为“aava cavbr”在arr1中的第三个元素中。

如果我正确理解您的问题,可能代码如下:

arr1.map(function(ele){
    var current = ele[0].split(' ');
    var head = current.shift();      // head is first group
    var tail = current.pop();        // tail is last  group
    // console.log(head.concat([' '],tail));
    return head.concat([' '],tail);
});

基于您的问题,我假设这些将始终且仅在嵌套数组中位于第一位

// loop over the inner arrays
arr1.forEach(function(innerArr) {
  var parts = innerArr[0].split(' ');
  innerArr[0] = parts[0] + ' ' + parts[ parts.length - 1 ];
});
如果这些元素中从来没有额外的空格(例如,它总是“x y z”,而不是“x y其他一些有空格的东西”,那么你可以只做
innerArr[0]。替换(/\s[^]\s/,”);
,但我不清楚数据的确切形式

编辑:

基于新的数据格式,这里有更多您想要的内容

var newArr = arr1.map(function(val) {
  var parts = val.split(',');
  var words = parts[0].split(' ');
  if (words.length > 2) {
    parts[0] = words[0] + ' ' + words[ words.length - 1 ];
  }
  return parts.join(',');
});

在我看来,您希望获取第一个值和最后一个值,并用空格字符分隔它们。下面是我能想到的最简单的方法:

var arr1 = ["avd befe, bla, bla, bla, bla", "cveve devev, bla, bla, bla, bla", "aava beve. cavbr, bla, bla, bla, bla", "feve gyhyh, bla, bla, bla, bla", "ibtbt, bla, bla, bla, bla"]

function clean(str) {
  var foo = str.split(",")[0];
  var bar = foo.substr(0, foo.indexOf(" ")) + foo.substr(foo.lastIndexOf(" "));
  return str.replace(foo, bar);
}
for (var i = 0; i < arr1.length; i++) {
    arr1[i] = clean(arr1[i]);
}
var arr1=[“avd befe,bla,bla,bla,bla”,“cveve devev,bla,bla,bla,bla”,“aava beve.cavbr,bla,bla,bla,bla”,“feve gyhyh,bla,bla,bla,bla”,“ibtbt,bla,bla,bla”]
功能清洁(str){
var foo=str.split(“,”[0];
var bar=foo.substr(0,foo.indexOf(“”)+foo.substr(foo.lastIndexOf(“”));
返回str.replace(foo,bar);
}
对于(变量i=0;i
您想删除空白,就像“ab”->“ab”一样,对吗?不完全正确。我想搜索所有第一个元素以查找内部数组,然后执行以下“x y z”->“x z”。内部数组中的第一个元素有三种形式:“x”、“x y”和“x y z”…我只想找到形式为“x y z”的元素删除内部字符您的意思是只找到数组中的第一个元素并删除“x y z”->“x y”,您要删除的字符规则是什么?对-因此第一个元素可以是1)“x”2)“x y”3)“x y z”。我只想修改#3我会看一看——但就我的目的而言,这种假设总是而且只放在第一位是有效和充分的,因为我是个傻瓜。我把正则表达式和字符串混合在一起。请尝试
.split(“”)
.split(/\s/)
。但并不像我刚才做的那样。我会更新答案。不用担心-我感谢你的努力;我发布了bc,我自己也被难倒了,所以现在尝试应该没什么坏处。我还删除了完全不准确的代码注释,这是我之前删除的一个想法的残余。实际上,它是
innerArr[0].replace(/\s[^]\s/,“”)东西。顺便说一句,这实际上应该是一行,而不是两行或更多行(像所有其他答案一样)。我道歉-你知道我在陈述问题时犯了什么错误吗?你对问题的措辞是正确的。在阅读了其他一些答案之后,我意识到您可能也在寻求一种迭代嵌套数组的方法。我应该编辑我的答案并提供帮助吗?嗨,我重新表述了整个问题。我在问题陈述中犯了一个错误。没有嵌套数组-它是一个数组,其中每个元素都是一个长字符串,块之间用逗号分隔。关注第一组字符,我想删除第一个逗号之前的中间一组字符,以便使用逗号分隔的字符串。这行吗?