如何解决如何从字符串中删除 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#findIndex
和 Array#slice
。
-
Array#findIndex
匹配第一次出现并停止循环执行 - 然后您可以根据匹配的索引使用
Array#slice
拆分数组 -
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 举报,一经查实,本站将立刻删除。