Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Решить простенькую задачу (https://javascript.ru/forum/misc/53553-reshit-prostenkuyu-zadachu.html)

fermer 08.02.2015 20:04

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

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

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

На самом деле я ее решил, но воспользовался некой хитростью, а код необходимо писать только, где begin и end

freee 08.02.2015 20:07

Цитата:

Сообщение от fermer
решить простенькую задачу.

А в чем она заключается?

melky 08.02.2015 20:07

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"));
});

melky 08.02.2015 20:10

На 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"));
});

fermer 08.02.2015 20:29

Цитата:

Сообщение от melky (Сообщение 355719)
return [].join.call(arguments, ' ')

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

это 5 строк, и к тому же добавил пробелы в аргументах.

melky 08.02.2015 20:36

Цитата:

Сообщение от 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) )

fermer 08.02.2015 20:46

Цитата:

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


Часовой пояс GMT +3, время: 16:19.