从字符串中删除字符然后将其反转

时间:2021-03-03 04:14:27

标签: javascript string function reverse remove

我需要一个函数,它接受一个字符数组并返回相同的数组,但颠倒了并且没有“*”字符。

我尝试了很多代码都没有成功。这是我最后一次尝试(对不起,如果没有意义,我正在学习 JS)


function laClaveSecreta(carac){
    let new_str=[];
    for(i=0;i<carac.length;i++){
        if(carac[i]==="*"){
            new_str=new_str.push(carac.replace(/[*\s]/g, ''));
            
        }
        return new_str.reverse();
    }
    
 
}

//Running the function with this parameter

laClaveSecreta( [ "s", "*", "e", "n", "u", "l", " ", "s", "*", "e", " ", "a", "í", "*", "d", " ", "l", "*", "E", "*"] )

//Result I am looking for

"El día es lunes"  

6 个答案:

答案 0 :(得分:1)

先把数组转成字符串会更容易,然后就可以对整个字符串使用replace -

const input =
  [ "s", "*", "e", "n", "u", "l", " ", "s", "*", "e", " ", "a", "í", "*", "d", " ", "l", "*", "E", "*"]

console.log(input.reverse().join("").replace(/[*]/g, ""))

El día es lunes

不过这不会教你太多。我认为这是家庭作业或其他东西。使用 reversejoinreplace 等内置函数是更高级别的。您可以使用非常基本的 for 循环来解决问题 -

function laClaveSecreta(carac)
{ let r = ""
  for (const c of carac)
    if (c == "*")
      continue
    else
      r = c + r
  return r
}

const input =
  [ "s", "*", "e", "n", "u", "l", " ", "s", "*", "e", " ", "a", "í", "*", "d", " ", "l", "*", "E", "*"]

console.log(laClaveSecreta(input))

El día es lunes

答案 1 :(得分:1)

尝试使用 let filteredArray = carac.filter( char => char != '*') 然后使用 return filteredArray.reverse().join("")

答案 2 :(得分:0)

我已经过滤了数组,反转了它,然后我在没有正则表达式的情况下加入了它。代码看起来更简洁并解释了步骤。

const laClaveSecreta = (arr) => arr.filter(arrItem => arrItem !== '*').reverse().join('');

laClaveSecreta( [ "s", "*", "e", "n", "u", "l", " ", "s", "*", "e", " ", "a", "í", "*", "d", " ", "l", "*", "E", "*"] )

答案 3 :(得分:0)

另一种使用 Array.prototype.filter() 的方法。

const input =
  [ "s", "*", "e", "n", "u", "l", " ", "s", "*", "e", " ", "a", "í", "*", "d", " ", "l", "*", "E", "*"]

console.log(input.reverse().filter(item => item !== "*").join(""));

答案 4 :(得分:0)

你可以这样做...

const laClaveSecreta  = carac =>
  {
  let new_str = '';
  for(i=carac.length;i--;)
    if(carac[i]!=="*") new_str +=carac[i]
  return new_str 
  }

console.log( laClaveSecreta('s*enul s*e aí*d l*E*'))

const laClaveSecreta  = carac => carac.reduceRight((a,c)=> (c==="*") ? a : a+c ,'')

console.log( laClaveSecreta([...'s*enul s*e aí*d l*E*']))

答案 5 :(得分:-1)

function laClaveSecreta(carac){
  let new_str=[];
  for(i=0;i<carac.length;i++){
    if(carac[i] !=="*"){
        new_str.push(carac[i]);
    }
}
 return new_str.reverse();
}