Домашни 08.Functions-04.Appearance count


0

Здравейте може ли някой да даде малко идеи за 4-та задача : 

var arr = [28, 73, 21, 6, -7856, 73, 73, -56],
    arrLenght = arr.length,
    theNumber = [73],
    len = 0;

    if (arrLenght >= 1){
        for (var i = 1; i <= arrLenght; i+=1){
            if (arr[i] == theNumber){
                len++;
            }
        }
        console.log(len);
    }

Този код може да преброй числото което търся колко пъти се появява в масива ,но някой може ли да ми помогне как да го направя на няколко малко функции и по точно както е  казано в заданието .

Първите задачи бяха доста по елементарни ето го моето решение:

01. Say Hello

let x = args[0];

function StringName (){
    console.log('Hello,' +' '+ x + '!');
    return 5;
}

StringName() + x;

02.Get largest number

function GetMax(){
    if (arguments[0] > arguments[1] && arguments[0] > arguments[2]){
        console.log(arguments[0]);
    }else if (arguments[1] > arguments[0] && arguments[1] > arguments[2]){
        console.log(arguments[1]);
    }else if (arguments[2] > arguments[0] && arguments[2] > arguments[1]){
        console.log(arguments[2]);
    }
}


GetMax(10, 15, 7);

03.English Digit

let x = args[0];

EnglishDigit(x);

function EnglishDigit(){
let number = (Math.abs(x) % 10);

switch (number){
    case 1 : console.log('one');break;
    case 2 : console.log('two');break;
    case 3 : console.log('three');break;
    case 4 : console.log('four');break;
    case 5 : console.log('five');break;
    case 6 : console.log('six');break;
    case 7 : console.log('seven');break;
    case 8 : console.log('eight');break;
    case 9 : console.log('nine');break;
    case 0 : console.log('zero');break;
    default : console.log('Error');break;
}
}




Отговори



1

Целта на функциите е да ги използваш за код, който ще се повтаря. В случая условието на задачата се изпълнява само с една функция, тъй като параметрите ти идват от бгкодер (досега всички задачки в JS Fundamentals си ги правил с функции) Ако искаш да разбиеш кода на две части: 

 - в основната функция main ще си си дефинирал квото ти е нужно и ще си преработиш инпута

 - в друга функция ще си сложиш работещите операции

function main(args) {   //наименование на основната функция
    let arr = args[1].split(' ').map(Number),  
index = -1;//дефиниране

work(args);  //извикване на функцията, която ти търси числото. Забележи, че това се случва в скоупа на основната функция

    function work() {   //тяло на работливата ти функция
for (let i = 1; i < arr.length; i++) {
            if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) {
                index = arr.indexOf(arr[i]);
                break;
            }
        }
    console.log(index);
    }
}

main(['6', '1 2 3 4 5 6 7 8 9 -10']);//примерен вход

Същото можеш да направиш и с 4 задача:

      

function solve(arr) {
    let array = arr[1],
    number = +arr[2]
    currNumber = 0;

var some = arr[1].split(' ').map(Number);

appCount(arr);

    function appCount() {

       for(let i = 0; i < some.length; i++) {
           if (+some[i] === number) {
               currNumber++;
           }
       }
       console.log(currNumber);
    }
}

solve(['8', '28 6 21 6 -7856 73 73 -56 73 73 73 ', '6']);

Ако имаш въпроси питай. Надявам се да съм бил полезен.




0
Много благодаря за обяснението и отделеното време !


0
За да не пускам нова тема, някой може ли да ми помогне със задачата 6. First larger than neighbours.
Благодаря предварително :)

от Cvetinn (35 точки)



-1

Това е моето рeшение на 4та задача за 100 точки

function appearanceCount(args) {

    var sizeOfArray = +args[0],
        array = args[1].split(' '),
        numberX = +args[2],
        counter = 0,
        i = 0;

    for (i = 0; i < sizeOfArray; i += 1) {
        if (+array[i] === numberX) {
            counter += 1;
        }
    }

    console.log(counter);




0

Моето решение:

function solve(args) {
    var array = args[0].split(' '),
        num = array[array.length - 1],
        appearance = 0,
        i = 0;

    if (array[0] >= 1 && array[0] <= 1024) {
        array.shift();
        array.pop();

        for (i; i < array.length; i += 1) {
            if (array[i] === num) {
                appearance += 1;
            }
        }
        console.log(appearance);
    }
}


от dreadlocker (22 точки)


0
Привет! Въпроса ми е относно 3та задача EnglishDigit. При мен работи безотказно, тествах с как ли не. БГКодер не я харесва и дата tuntime error. Вече не знам какво да променям, че да му се угоди...Някой може ли да подскаже? Благодаря предварително :)
// Copy Code Snippet Here function solve(args){ let num = args% 10, result; switch (num) { case 1 : result = 'one';break; case 2 : result = 'two';break; case 3 : result = 'three';break; case 4 : result = 'four';break; case 5 : result = 'five';break; case 6 : result = 'six';break; case 7 : result = 'seven';break; case 8 : result = 'eight';break; case 9 : result = 'nine';break; case 0 : result = 'zero';break; } console.log(result); }

от k_kaneva (127 точки)


-1

А съм добавила ето това 

  return returnLastDigit(input);
    function returnLastDigit(input)

след

let num = args% 10,тоест след като дефнираш входните данни, ето моя код 

function englishInDigit(args) {
    var input = +args;
    return returnLastDigit(input);
    function returnLastDigit(input) {
        switch (input % 10) {
            case 1: return 'one';
            case 2: return 'two';
            case 3: return 'three';
            case 4: return 'four';
            case 5: return 'five';
            case 6: return 'six';
            case 7: return 'seven';
            case 8: return 'eight';
            case 9: return 'nine';
            default: return "zero";
        }
    }
}