Swasbuckler-27 Swasbuckler-27 - 3 months ago 16
Javascript Question

Javascript string conversion and array sort

I'm attempting a challenge on a JavaScript learning website.

The instructions are:


It was decided to attribute a "weight" to numbers. The weight of a
number will be from now on the sum of its digits For example 99 will
have "weight" 18, 100 will have "weight" 1 so in the list 100 will
come before 99. Given a string with the weights of FFC members in
normal order can you give this string ordered by "weights" of these
numbers?

Example:
a = "56 65 74 100 99 68 86 180 90"ordered by numbers weights becomes: "100 180 90 56 65 74 68 86 99" When two numbers have the same
"weight", let us class them as if they were strings and not numbers:
100 is before 180 because its "weight" (1) is less than the one of
180 (9) and 180 is before 90 since, having the same "weight" (9) it
comes before as a string. All numbers in the list are positive
numbers and the list can be empty.


My attempt is below:



function orderWeight(strng) {

console.log(strng);
if (strng === "") {
return strng;
} else {
var arr = strng.split(" ").sort();
console.log(arr);
var keys = [];

for (var i = 0; i < arr.length; i++) {
var weight = 0;
var current = arr[i];
//loop through the array adding the digits of each number
for (var j = 0; j < arr[i].length; j++) {
var sNum = parseInt(arr[i].charAt[j]);
weight += sNum;
console.log(weight);
}
keys.push({
weight: weight,
number: current
});
console.log(keys);
}
}
};





The output from my code is:

input string "103 123 4444 99 2000"
console.log(arr); = [ '103', '123', '2000', '4444', '99' ]
console.log(weight); = NaN


I realise I will need to do more after I get this portion of code working but if someone could just point me in the direction of getting this part to do what I want I would much appreciate it.

Answer

You are using brackets instead of parentheses when calling charAt.

Change this:

var sNum = parseInt(arr[i].charAt[j]);

to:

var sNum = parseInt(arr[i].charAt(j));
Comments