微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从字符串中删除 First 甚至 no?

如何解决如何从字符串中删除 First 甚至 no?

我给出了一个只有数字一致的字符串。

示例

"134"

问题

我必须编写一个函数,该函数将返回除第一个偶数以外的字符串

示例输出

let inputString = "1234";

function palindromeRearranging(inputString) {
/// code
}

console.log(palindromeRearranging(inputString));

// output is "1234"

示例代码

let inputString = "1234"

function palindromeRearranging(inputString) {
  let arr = inputString.split("");
 arr = arr.filter((w)=>{return w % 2 !== 0 })
  return arr.join("")

}

console.log(palindromeRearranging(inputString))

我的尝试

{{1}}

但它返回的是一串奇数。

请解释我做错了什么以及如何实现我的目标。

谢谢你陪着我。

解决方法

使用正则表达式并匹配(仅一次)并删除所有 02468 字符。

const palindromeRearranging = inputString => inputString.replace(
  /[02468]/,''
);

console.log(palindromeRearranging("1234"));

,

此外,您可以使用 .find() 获取满足条件的第一个元素:

let inputString = "1234"

function palindromeRearranging(inputString) {
  let arr = inputString.split("");
  const found = arr.find(element => element % 2==0);
  


  return arr.join("").replace(found,'')

}

console.log(palindromeRearranging(inputString))
,

您正在从字符串中删除所有偶数,只有第一个除外。

@CertainPerformance 的回答很好。

但是如果您想更正您的功能,那么我的代码片段就可以了。

let inputString = "13"

function palindromeRearranging(inputString) {
  let arr = inputString.split("");
  let remove = arr.filter((w)=>{return w % 2 === 0 });
  if (remove.length < 1){
  return inputString
  }
  arr.splice(arr.indexOf(remove[0]),1);
  return arr.join("")

}

console.log(palindromeRearranging(inputString))

,

您的函数离实际解决方案不远了。目前,您过滤掉所有偶数,因为如果是第一个,您就会错过检查。

考虑以下事项:

let inputString = "1234";

function palindromeRearranging(inputString) {
  let arr = inputString.split("");
  let firstWasFound = false;
  arr = arr.filter((w)=> {
    if(firstWasFound) {
      return true;
    }
    const isOdd = w % 2 !== 0;
    if(!isOdd){
      firstWasFound = true;
      return false;
    }
    return isOdd;
  })
  return arr.join("")
}


console.log(palindromeRearranging(inputString));

使用变量 firstWasFound 以便它只被删除一次。

,

您可以使用 Array#findIndexArray#slice

  1. Array#findIndex 匹配第一次出现并停止循环执行
  2. 然后您可以根据匹配的索引使用 Array#slice 拆分数组
  3. parseInt 返回数字而不是字符串

let inputString = "1131"

function palindromeRearranging(inputString) {
  let arr = inputString.split("");
  let ind = arr.findIndex(a => a % 2 === 0)
  let res = ind === -1 ? arr :[...arr.slice(0,ind),...arr.slice(ind + 1,arr.length)]
  return parseInt(res.join(''))
}

console.log(palindromeRearranging(inputString))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。