Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.02.2015, 20:04
Новичок на форуме
Отправить личное сообщение для fermer Посмотреть профиль Найти все сообщения от fermer
 
Регистрация: 02.02.2015
Сообщений: 6

Решить простенькую задачу
Здравствуйте помогите решить простенькую задачу.

it("make sentencer function", function() {
    function sentencer(){
      // BEGIN
     
      // END
    }

    assert.equal("This is very good", sentencer("This", "is", "very", "good"));

На самом деле я ее решил, но воспользовался некой хитростью, а код необходимо писать только, где begin и end
Ответить с цитированием
  #2 (permalink)  
Старый 08.02.2015, 20:07
Аспирант
Посмотреть профиль Найти все сообщения от freee
 
Регистрация: 05.02.2015
Сообщений: 51

Сообщение от fermer
решить простенькую задачу.
А в чем она заключается?
Ответить с цитированием
  #3 (permalink)  
Старый 08.02.2015, 20:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

var assert = require('chai').assert;

it("make sentencer function", function() {
    function sentencer(){
      // BEGIN
     return [].join.call(arguments, ' ')
      // END
    }

    assert.equal("This is very good", sentencer("This", "is", "very", "good"));
});
Ответить с цитированием
  #4 (permalink)  
Старый 08.02.2015, 20:10
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

На ECMAScript 6:


//запуск через  mocha --compilers js:6to5/register file.js
var assert = require('chai').assert;

it("make sentencer function", function() {
    const sentencer = (...words) => words.join(' ')

    assert.equal("This is very good", sentencer("This", "is", "very", "good"));
});
Ответить с цитированием
  #5 (permalink)  
Старый 08.02.2015, 20:29
Новичок на форуме
Отправить личное сообщение для fermer Посмотреть профиль Найти все сообщения от fermer
 
Регистрация: 02.02.2015
Сообщений: 6

Сообщение от melky Посмотреть сообщение
return [].join.call(arguments, ' ')
Круто всего одна строка!
А можете рассказать подробней про эту строчку.
Я решил вот так
var sum = "";
      for (var i=0; i<arguments.length; i++) {
      sum +=arguments[i];
      }
       return sum;

это 5 строк, и к тому же добавил пробелы в аргументах.
Ответить с цитированием
  #6 (permalink)  
Старый 08.02.2015, 20:36
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от fermer
А можете рассказать подробней про эту строчку.
join применяется не только для чистых массивов , но и для всех объектов со свойством length (Array-like)http://es5.javascript.ru/x15.4.html#x15.4.4.5
ну и идет дальше по циклу, от начала до значения в length

с Function.prototype.call я думаю ты знаком

еще демка
var a = { 0: 'Hello', 1: ' World!', length: 2 }
alert( [].join.call(a) )
Ответить с цитированием
  #7 (permalink)  
Старый 08.02.2015, 20:46
Новичок на форуме
Отправить личное сообщение для fermer Посмотреть профиль Найти все сообщения от fermer
 
Регистрация: 02.02.2015
Сообщений: 6

Цитата:
Function.prototype.call я думаю ты знаком
Нет не знаком, только знакомлюсь с языком и программированием вообще =) Спасибо за ссылку
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста помогите решить задачу на java alex01rus1991 Элементы интерфейса 9 27.11.2012 00:02
Решить задачу по упорядочиванию строк DmiTry2010 Работа 6 25.05.2010 00:19
Не могу решить задачу: Добавление цитаты в textarea,где находистся курсор dummer jQuery 1 24.12.2009 18:17
Помогите решить задачу vkg Общие вопросы Javascript 1 20.02.2008 11:59