Javascript将数组中的数字按两位数顺序求和
我一直在做这个练习,最后我会告诉你我的输出是什么,但在描述这个练习之前,请提前感谢 说明: 它接收一个带有数字和字母的数组,并返回一个带有美化数字的数组。信件保持不变 美化过程是通过将所有数字相加,将一个数字减少为一位数:Javascript将数组中的数字按两位数顺序求和,javascript,sum,letters,Javascript,Sum,Letters,我一直在做这个练习,最后我会告诉你我的输出是什么,但在描述这个练习之前,请提前感谢 说明: 它接收一个带有数字和字母的数组,并返回一个带有美化数字的数组。信件保持不变 美化过程是通过将所有数字相加,将一个数字减少为一位数: 123 = 6 because 1+2+3 = 6 9 = 9 9956 = 2 because 9+9+5+6 = 29 -> 2+9 = 11 -> 1+1 = 2 793 = 1 because 7+9+3 = 19 -> 1+9 = 10 ->
123 = 6 because 1+2+3 = 6
9 = 9
9956 = 2 because 9+9+5+6 = 29 -> 2+9 = 11 -> 1+1 = 2
793 = 1 because 7+9+3 = 19 -> 1+9 = 10 -> 1+0 = 1
Example: beautifyNumbers([23,59, 4,'A','b']) returns [5, 5, 4, 'A', 'b']
我的代码:
函数美化数值数组{
var newArray=[];
array.forEachfunctionelement{
//检查字符是否为字母而不是数字
如果元素的类型==编号{
var sNumber=element.toString;
对于变量i=0,len=sNumber.length;i} 在您的示例中,您应使用以下内容更改零件: 发件人: 致:
在您的示例中,您应使用以下内容更改零件: 发件人: 致: 试着这样做:
function beautifyNumbers(array) {
var newArray = [];
array.forEach(function(element) {
// Checks if character is a letter and not a number
if (typeof element == "number") {
newArray.push(beautifyElement(element));
} else {
// pushes numbers to the array without making
// any change to them
newArray.push(element);
}
});
// returns the array
return newArray;
}
function beautifyElement(element){
var sNumber = element.toString();
var sum = 0;
for (var i = 0, len = sNumber.length; i < len; i += 1) {
sum = sum + +sNumber[i];
}
if(sum>9){
return beautifyElement(sum);
}else{
return sum;
}
}
beautifyNumbers([23, 59, 4, 'A', 'b'])
试着这样做:
function beautifyNumbers(array) {
var newArray = [];
array.forEach(function(element) {
// Checks if character is a letter and not a number
if (typeof element == "number") {
newArray.push(beautifyElement(element));
} else {
// pushes numbers to the array without making
// any change to them
newArray.push(element);
}
});
// returns the array
return newArray;
}
function beautifyElement(element){
var sNumber = element.toString();
var sum = 0;
for (var i = 0, len = sNumber.length; i < len; i += 1) {
sum = sum + +sNumber[i];
}
if(sum>9){
return beautifyElement(sum);
}else{
return sum;
}
}
beautifyNumbers([23, 59, 4, 'A', 'b'])
我已对您的代码进行了更改。请找到下面的代码,这是根据您的需要给出的结果
function beautifyNumbers(array) {
var newArray = [];
array.forEach(function (element) {
// Checks if character is a letter and not a number
if (typeof element == "number") {
var sNumber = element.toString();
var beutifySum = 0;
for (var i = 0, len = sNumber.length; i < len; i += 1) {
beutifySum += +sNumber.charAt(i);
}
beutifySum = beutifySum % 9 === 0 ? 9 : beutifySum % 9;
newArray.push(beutifySum);
} else {
// pushes numbers to the array without making
// any change to them
newArray.push(element);
}
});
console.log(newArray);
// returns the array
return newArray;
}
beautifyNumbers([23, 59, 4, 'A', 'b'])
我已对您的代码进行了更改。请找到下面的代码,这是根据您的需要给出的结果
function beautifyNumbers(array) {
var newArray = [];
array.forEach(function (element) {
// Checks if character is a letter and not a number
if (typeof element == "number") {
var sNumber = element.toString();
var beutifySum = 0;
for (var i = 0, len = sNumber.length; i < len; i += 1) {
beutifySum += +sNumber.charAt(i);
}
beutifySum = beutifySum % 9 === 0 ? 9 : beutifySum % 9;
newArray.push(beutifySum);
} else {
// pushes numbers to the array without making
// any change to them
newArray.push(element);
}
});
console.log(newArray);
// returns the array
return newArray;
}
beautifyNumbers([23, 59, 4, 'A', 'b'])
您好,您可以像我在评论中提到的那样尝试 函数美化数值数组{ var newArray=[]; array.forEachfunctionelement{ //检查字符是否为字母而不是数字 如果元素的类型==编号{ 如果元素%9==0&&element!=0 newArray.push9; 其他的 newArray.pushelement%9; }否则{ newArray.pushelement; } }; 返回新数组; }
console.LogBeautifyNumber[1231,0,18,27,12354,59,4'A',b']您好,您可以像我在评论中提到的那样尝试 函数美化数值数组{ var newArray=[]; array.forEachfunctionelement{ //检查字符是否为字母而不是数字 如果元素的类型==编号{ 如果元素%9==0&&element!=0 newArray.push9; 其他的 newArray.pushelement%9; }否则{ newArray.pushelement; } }; 返回新数组; }
logbeautifyNumbers[1231,0,18,27,12354,59,4,'A','b']纯函数,无任何字符串操作这将是我的解决方案 功能性幽默{ var d=Math.floorMath.log10n+1,//获取位数 sum=Arrayd.fill//准备数组并放置数字 .map,i=>Math.floorn%Math.pow10,d-i/Math.pow10,d-1-i .reducep,c=>p+c;//获取数组项的总和 return sum>9?funnySumsum:sum;//如果仍有两位数继续。。。 }
console.logfunnySum9956 没有任何字符串操作的纯函数,这将是我的解决方案 功能性幽默{ var d=Math.floorMath.log10n+1,//获取位数 sum=Arrayd.fill//准备数组并放置数字 .map,i=>Math.floorn%Math.pow10,d-i/Math.pow10,d-1-i .reducep,c=>p+c;//获取数组项的总和 return sum>9?funnySumsum:sum;//如果仍有两位数继续。。。 } console.logfunnySum9956;美化
e数字,如果数字%9==0,则算法将是9,否则数字%9将是最终答案…除了dr0==0,而不是9为了美化数字,算法将是如果数字%9==0,则9,否则数字%9将是最终答案…除了dr0==0,而不是9在代码中,您正在将每个分离的数字添加到newArray中。因此,您的结果可能会引用。我在列表中添加了所有字符和%9。因此,它将只返回您需要的单个数字。在您的代码中,它为18给出的答案是,您将在newArray中添加每个separated数字。因此,您的结果可以参考。我在列表中添加了所有字符和%9。因此,它只会返回一位数,这是您所需要的。它为18您的最后一个递归代码给出的答案是:BeautifNumbers[23,59,4,'A','b']=>[3,9,0,A,b],而我期望的结果是[5,5,4,'A','b],这是我想要的结果,您的最后一个递归代码返回:beautifyNumbers[23,59,4,'A','b']=>[3,9,0,A,b]然而我期望[5,5,4,'A',b',这是我想要的结果Cellent Rajesh!你能发表一些评论让每个人,包括我自己,都能理解每一行在做什么吗?太棒了!你能发表一些评论让所有人,包括我自己,都能理解每一行在做什么吗?Hello@sinsuren我不明白你的ifsNumber%9==0 newArray.push9;如果我更改数组的参数,它仍然可以工作吗?Hello@sinsuren我不理解您的ifsNumber%9==0 newArray.push9;如果我改变数组的参数,它还能工作吗?
function bsum(v) {
var res = (v+"").split('').reduce(function(a, b) {return (a | 0) + (b | 0);});
if(res | 0 > 10) return bsum(res) ;
else return res;
}
function beautifyNumbers(array) {
return array.map(function(v, i) {
if (typeof v == 'number') {
return bsum(v) | 0;
}
else return v;
});
}