【发布时间】:2017-04-07 05:00:56
【问题描述】:
例如,假设我有数字 345。如何在 javascript 中循环遍历数字中的每个数字并将其提高到连续的 n 次方:即 3^1 + 4^2 + 5^3?
【问题讨论】:
-
你有没有尝试解决它?
标签: javascript
例如,假设我有数字 345。如何在 javascript 中循环遍历数字中的每个数字并将其提高到连续的 n 次方:即 3^1 + 4^2 + 5^3?
【问题讨论】:
标签: javascript
使用String.prototype.split() 和Array.prototype.reduce() 计算总和:
let x = String(345).split('').reduce((a, v, i) => a + Math.pow(v, i + 1), 0);
console.log(x); // 144
如果您想要将连续的幂作为数组而不是计算总和,请使用 Array.prototype.map():
let a = String(345).split('').map((v, i) => Math.pow(v, i + 1));
console.log(a); // [3, 16, 125]
【讨论】:
这会将数字转换为字符串,将其拆分为数字,然后将每个数字提高到其索引的幂加一,然后通过加法减少以得到答案:
('' + 345).split('').map(function(v, i) {
return Math.pow(parseInt(v), i+1)
}).reduce(function(a, v) {
return a + v
}, 0)
结果为@987654322@
【讨论】:
使用 for() 循环的解决方案
"use strict";
let number = 345;
let str = number.toString();
let answer = 0;
for (let i in str) answer += Math.pow(str[i], Number(i)+1);
console.log(answer);
【讨论】:
试试这个。
<!DOCTYPE html>
<html>
<head>
<script>
var number = 345;
var strNum = number.toString();
var sum = 0;
for(var i = 0; i < strNum.length; i++ ){
sum += Math.pow(parseFloat(strNum[i]), i+1);
}
console.log(sum);
</script>
</head>
</html>
【讨论】:
strNum.substring(...) 而不是只使用strNum[i] 访问单个字符?