【发布时间】:2019-07-12 20:27:41
【问题描述】:
我需要一个函数调用 getLastNumbers 来搜索数组并返回最后一个运算符之后的最后一组数字。
例如:
[1, 1, 1, 1, 1, 1, "+", 2, 2, 2, 2, 2, 2, "*", 3, 3, 3, 3, 3, "-", 6, 6, 6, 6] Returns 6666
[1, 1, 1, 1, "+", 6, 6, 6, 6, 6, 6, "*", 9, 9, 9, 9, 9, "-", 6, 6, 6, 6, "+", 3, 3, 3] Returns 333
[7, "*", 7, "-", 6, "+", 3, "+", 6, "+", 3, 3, 3, 3, 3, "+", 6, "-", 5, 5, 5, 5, 5, 5, "*", 9, 9] Returns 99
[5, "*", 5] returns 5
为了澄清,我永远不会知道用户可以输入多少个数字或运算符。
在下面的尝试中查看我的冗长尝试:
function getLastNumber(arr){
let number = arr.filter(i => i === '*' || i === '/' || i === '+' || i === '-' ).length;
let counter = 0;
let arrayLength = arr.length;
let lastOpIndex = [];
for(let i = 0; i < arr.length; i++) {
if(arr[i] === '*' || arr[i] === '+' ||arr[i] === '-' ||arr[i] === '/'){
counter++;
if (counter === number) {
lastOpIndex.push(arr.indexOf(arr[i]));
}
}
}
let lastOpNum = parseInt(lastOpIndex.toString());
let startNum = lastOpNum + 1;
let mathNum = (arrayLength - lastOpNum) - 1;
let finalArray = [];
for(let i = startNum; i < arr.length; i++) {
finalArray.push(arr[i]);
}
let strResult = finalArray.toString().split(',').join('');
let finalResult = parseInt(strResult);
return finalResult;
}
getLastNumber([1, "+", 3, 3, 3, 3, 3, "+", 6, "+", 9, "*", 6, 6, 6, 3, 6, 6, 6, "-", 5, "*", 9, 9, 9, 9, 9, 9, 9, '/', 6, 8, 9, 9, '*', 8, 8, 8, 7]);
【问题讨论】:
-
如果您可能想接受答案,请删除您的问题,或者如果没有正确回答,请编辑它以阐明您的要求。这样它就不会再出现在未回答的部分了。
标签: javascript arrays