javascript - 寻求帮助为JS编写函数以完成任务
问题描述
我需要编写一个进行以下计算的函数:
param1 + param2 - param3 + param4 – param5…
并保持这种模式。如果遇到任何非数字字符,则将其值的 1/4 计算为数值。结果应该截断精度。
例如
function(11,’a’,2,30,’z’,3) returns 35
11 + (97/4) - 2 + 30 - (122/4) + 3
我不能使用String
内置函数:
endsWith()
includes()
indexOf()
lastIndexOf()
localeCompare()
match()
repeat()
replace()
search()
slice()
split()
startsWith()
substr()
substring()
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toString()
toUpperCase()
trim()
trimLeft()
trimRight()
valueOf()
我也不能使用Array
内置函数
concat()
copyWithin()
every()
fill()
filter()
find()
findIndex()
forEach()
indexOf()
isArray()
join()
lastIndexOf()
map()
pop()
push()
reduce()
reduceRight()
reverse()
shift()
slice()
some()
sort()
splice()
toString()
unshift()
valueOf()
解决方案
这是一个镜头:
const d = (...a) => {
let total = a[0];
for (let i = 1; i < a.length; i++) {
total += (+a[i] == a[i] ? a[i] : Math.round(a[i].charCodeAt(0) / 4)) * (i & 1 ? 1 : -1);
}
return total;
};
console.log(d(11, 'a', 2, 30, 'z', 3));
解释:从第一个参数开始累计。如果当前元素不是整数,则将其转换为 1 并除以 4 并舍入(未截断)结果。最后,根据索引的奇偶性乘以 1 或 -1 以交替加减。
PS:最好自己先尝试这些问题,而不是让我们玩得开心!
推荐阅读
- c - OpenMP C - 并行循环平均给出不同的结果
- r - 运行因子加载后,如何在 r 中的 pca 分析中保留 id 变量?
- angular - Dropbox SDK 并通过 filesDownloadZip 强制下载
- c# - 如何从同一个输入框中获取多个值并将它们分配给变量?
- python - Python中的精确轮廓查找算法
- c# - UWP 如何更改自定义光标?
- javascript - 在 Node js 中通过某些条件导出模块函数
- angular - 我如何添加外部 js 文件以在 angular cli V 7.2.1 上工作
- c++ - 我无法获得基于读取字符数组的算法来工作
- php - 为什么切换到安全文件夹(httpsdocs)会破坏 PHP 文件上传功能