Я учусь JS и мне нужна помощь со следующей задачей:Как создать функцию, которая возвращает функцию и разбивает файл csv?
Мне нужно создать function compile_csv_search(text, key_name)
, который анализирует текст в формате CSV. (Не требуется обрабатывать цитирование и избежать значений; предположат значение поля не содержат запятые или другие специальные символы.)
Функция должна возвращать функцию, которая выглядит рекорд по значению поля, указанное в второй аргумент compile_csv_search. Предположим, что все значения в ключевом поле уникальны.
Пример использования:
var csv_by_name = compile_csv_search(
"ip,name,desc\n"+
"1.94.0.2,server1,Main Server\n"+
"1.53.8.1,server2,Backup Server\n",
"name");
console.log(csv_by_name("server2"));
console.log(csv_by_name("server9"));
...will print:
{ip: "10.52.5.1", name: "server2", desc: "Backup Server"}
неопределенными
** Я не понимаю, что это значит "функции, которые возвращают функции". Как функция может возвращать другую функцию?
Спасибо!
P.S. прикрепление моего решения для обзора
function compile_csv_search(csvServerData){
var header = csvServerData.split('\n')[0].split(",");
var spleatedServerData = csvServerData.split('\n');
return function(serverName)
{
for(var i = 1; i < spleatedServerData.length; i++){
var singleServer = spleatedServerData[i].split(',')
var result = {};
var exist = false;
for (var j = 0; j < header.length; j++) {
if(singleServer.indexOf(serverName) == -1)
break;
exist = true;
result[header[j]] = singleServer[j];
}
if(exist){
return(result);
break;
}
}
}
}
var csv_by_name = compile_csv_search(
"ip,name,desc\n"+
"10.49.1.4,server1,Main Server\n"+
"10.52.5.1,server2,Backup Server\n");
Читайте: http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – user2864740
Ниже приведен пример функции, возвращающей функцию: 'function foo (name) {return function() {console.log (имя); }; }; Foo ('бар')(); '. Функции - это объект, поэтому они могут быть переданы и возвращены из функций. –
Обязательно отделите общую задачу от проблемы/проблемы. Разбор CSV является лишь второстепенной задачей (задача) и не связан с пониманием закрытий или постановкой проблемы (проблема). – user2864740