数字内的数字相乘 - 不包括零
Multiplying digits within a number - excluding zeros
我这里的这个例子中的函数运行良好,除了没有解决数字中可能存在的任何零,所以在执行函数时一切都等于零。
Multiplying individual digits in a number with each other in JavaScript
function digitsMultip(data) {
let arr = [];
for (let i of data) {
if (data[i] === 0) {
arr.push(data[i]);
}
}
return [...data.toString()].reduce((p, v) => p * v);
};
console.log(digitsMultip(3025));
我向其中添加了一个 for 循环来解释零并将其删除,但我在这里做错了。
Uncaught TypeError: data is not iterable
期望输出
3025 => 3 * 2 * 5 = 30
这会遍历您号码中的字符。如果字符不是“0”,则将其添加到数组中。然后通过乘以值来减少此数组,然后返回。
function digitsMultip(data) {
const arr = [];
for(let number of String(data)) {
if (number !== "0")
arr.push(number);
}
return arr.reduce((p, v) => p * v);
};
console.log(digitsMultip(3025));
您收到该错误是因为您试图遍历一个数字。
在迭代之前传入一个字符串或将数字转换为字符串将使它起作用。
与其以这种方式循环,更好且更易读的方法是使用 filter
方法在相乘之前过滤掉字符:
function digitsMultip(data) {
return [...data.toString()].filter(n => n > '0').reduce((p, v) => p * v);
};
console.log(digitsMultip(3025));
将 input
变成 string
,然后 split
、filter
零和 reduce
相乘
const input = 1203
const removeZeros = number =>{
const arr = number.toString().split('').filter(i => i !== '0')
return arr.reduce((a,c) => parseInt(a) * parseInt(c))
}
console.log(removeZeros(input))
一行版
const removeZeros = n => [...n.toString()].filter(c => c !== '0').map(x => parseInt(x)).reduce((a,c) => a*c)
我这里的这个例子中的函数运行良好,除了没有解决数字中可能存在的任何零,所以在执行函数时一切都等于零。
Multiplying individual digits in a number with each other in JavaScript
function digitsMultip(data) {
let arr = [];
for (let i of data) {
if (data[i] === 0) {
arr.push(data[i]);
}
}
return [...data.toString()].reduce((p, v) => p * v);
};
console.log(digitsMultip(3025));
我向其中添加了一个 for 循环来解释零并将其删除,但我在这里做错了。
Uncaught TypeError: data is not iterable
期望输出
3025 => 3 * 2 * 5 = 30
这会遍历您号码中的字符。如果字符不是“0”,则将其添加到数组中。然后通过乘以值来减少此数组,然后返回。
function digitsMultip(data) {
const arr = [];
for(let number of String(data)) {
if (number !== "0")
arr.push(number);
}
return arr.reduce((p, v) => p * v);
};
console.log(digitsMultip(3025));
您收到该错误是因为您试图遍历一个数字。 在迭代之前传入一个字符串或将数字转换为字符串将使它起作用。
与其以这种方式循环,更好且更易读的方法是使用 filter
方法在相乘之前过滤掉字符:
function digitsMultip(data) {
return [...data.toString()].filter(n => n > '0').reduce((p, v) => p * v);
};
console.log(digitsMultip(3025));
将 input
变成 string
,然后 split
、filter
零和 reduce
相乘
const input = 1203
const removeZeros = number =>{
const arr = number.toString().split('').filter(i => i !== '0')
return arr.reduce((a,c) => parseInt(a) * parseInt(c))
}
console.log(removeZeros(input))
一行版
const removeZeros = n => [...n.toString()].filter(c => c !== '0').map(x => parseInt(x)).reduce((a,c) => a*c)