в чем разница между двумя кодами ниже (я запустил их, но они дали разные результаты) - PullRequest
0 голосов
/ 01 ноября 2019

Я работал над проблемой в JavaScript, и инструкция состоит в том, чтобы разделить количество добровольцев с количеством соседей.

Я использовал метод массива .length, чтобы получить длину, и выполнил операцию,но меня беспокоит то, что я попробовал это с двумя подходами, один прошел, а другой не смог пройти тест, коды ниже

Этот прошел тест

const function(volunteers, neighborhood){
  let neighborhoodLent = neighborhood;
  let volunteersLength = volunteers.length
  let evaluate =  neighborhoodLent / volunteersLength;

  return evaluate;
}

Этот ниже провалил тест.

const function(volunteers, neighborhood){
  return volunteers.length / neighborhood.length
}

Когда дан массив, подобный приведенному ниже

const volunteers = [
  'Sally',
  'Jake',
  'Brian',
  'Hamid'
];

const neighbourhoods = [
  'Central Valley',
  'Big Mountain',
  'Little Bridge',
  'Bricktown',
  'Brownsville',
  "Paul's Boutique",
  'Clay Park',
  'Fox Nest'
];

, вывод должен быть 2.

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

Ответы [ 3 ]

0 голосов
/ 01 ноября 2019

Результат должен быть таким же

  • В методе two вместо volunteers.length / neighbourhoods.length он должен быть neighbourhoods.length / volunteers.length, потому что в математических операциях, таких как деление, порядок факторов изменяет результат

Фиксированный код:

const volunteers = ['Sally','Jake','Brian','Hamid']
const neighbourhoods = ['Central Valley','Big Mountain','Little Bridge','Bricktown','Brownsville',"Paul's Boutique",'Clay Park','Fox Nest']

const one = (volunteers, neighbourhoods) => {
  const neighbourhoodsLength = neighbourhoods.length
  const volunteersLength = volunteers.length
  const evaluate = neighbourhoodsLength / volunteersLength

  return evaluate
}

const two = (volunteers, neighbourhoods) => {
  return neighbourhoods.length / volunteers.length
}

console.log('one:', one(volunteers, neighbourhoods))
console.log('two:', two(volunteers, neighbourhoods))
0 голосов
/ 01 ноября 2019

Как прошел ваш первый код. Делительный массив по числу равен NaN. Попробуйте это.

function calculate(volunteers, neighborhoods) {
    return volunteers.length / neighborhoods.length
}
0 голосов
/ 01 ноября 2019

Похоже, вы использовали неправильный синтаксис для объявления функции. Обратите внимание, что function является зарезервированным ключевым словом в JavaScript. Так что const function {...} не является допустимым синтаксисом. Вы должны назвать свою функцию после ключевого слова function. Попробуйте написать так:

const volunteers = [
    'Sally',
    'Jake',
    'Brian',
    'Hamid'
];

const neighbourhoods = [
    'Central Valley',
    'Big Mountain',
    'Little Bridge',
    'Bricktown',
    'Brownsville',
    "Paul's Boutique",
    'Clay Park',
    'Fox Nest'
];

function calc (volunteers, neighborhood) {
    return neighborhood.length / volunteers.length;
}

const constCalc = (volunteers, neighborhood) =>{
    return neighborhood.length / volunteers.length;
}

console.log(`usual declaration`, calc(volunteers, neighbourhoods));
console.log(`arrow function:`, constCalc(volunteers, neighbourhoods));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...