如何从字符串中删除 First even no?
How to remove First even no from a string?
我给出了一个仅由数字组成的字符串。
例子
let inputString = "1234";
问题
我必须编写一个函数,它将 return 字符串,除了第一个偶数(如果存在的话)
示例输出
"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))
但它是return一串所有奇数。
请解释我做错了什么,我该如何实现我的目标。
谢谢你陪我。
使用正则表达式并匹配(仅一次)并删除任何 02468
.
的字符
const palindromeRearranging = inputString => inputString.replace(
/[02468]/,
''
);
console.log(palindromeRearranging("1234"));
您正在从字符串中删除所有偶数,只有第一个除外。
@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
,因此它只被删除了一次。
另外,您可以使用.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))
您使用 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))
我给出了一个仅由数字组成的字符串。
例子
let inputString = "1234";
问题
我必须编写一个函数,它将 return 字符串,除了第一个偶数(如果存在的话)
示例输出
"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))
但它是return一串所有奇数。
请解释我做错了什么,我该如何实现我的目标。
谢谢你陪我。
使用正则表达式并匹配(仅一次)并删除任何 02468
.
const palindromeRearranging = inputString => inputString.replace(
/[02468]/,
''
);
console.log(palindromeRearranging("1234"));
您正在从字符串中删除所有偶数,只有第一个除外。
@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
,因此它只被删除了一次。
另外,您可以使用.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))
您使用 Array#findIndex
和 Array#slice
。
Array#findIndex
匹配第一次出现并停止循环执行- 然后你可以根据匹配的索引 使用
parseInt
返回数字而不是字符串
Array#slice
拆分数组
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))