Вход

Просмотр полной версии : Решить простенькую задачу


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
решить простенькую задачу.
А в чем она заключается?

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
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
А можете рассказать подробней про эту строчку.

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 я думаю ты знаком
Нет не знаком, только знакомлюсь с языком и программированием вообще =) Спасибо за ссылку