Я не могу понять смысл этой строки кода (JavaScript) - PullRequest
0 голосов
/ 14 июня 2019

Я прочитал кучу уроков и постов, но я все больше и больше путался. В терминах Laymen (чрезвычайно простых и явных терминов), что делает приведенный ниже код? что заменить (/ / г, '-')? что такое req.params.item?

return todo.item.replace(/ /g, '-') !== req.params.item;

А для большего контекста весь код показан ниже.

var bodyParser = require('body-parser');
var data = [{item: 'get milk'}, {item: 'walk dog'}, {item: 'kick 
some coding ass'}];
var urlencodedParser = bodyParser.urlencoded({extended: false});

module.exports = function(app) {

app.get('/todo', function(req, res){
    res.render('todo', {todos: data});

});


app.post('/todo', urlencodedParser, function(req, res){
    data.push(req.body);
    res.json(data);
});


app.delete('/todo/:item', function(req, res){
    data = data.filter(function(todo){
        return todo.item.replace(/ /g, '-') !== req.params.item;
    });
    res.json(data);
});

};

1 Ответ

2 голосов
/ 14 июня 2019

Превращает все пробелы в строке todo.item в тире, сравнивает замененную строку с req.params.item и возвращает true, если они различаются. Например, если todo.item равно foo bar, а req.params.item равно foo-bar, будет возвращено false.

Что делает фильтр

data = data.filter(function(todo){
    return todo.item.replace(/ /g, '-') !== req.params.item;
});

превращает data в массив, содержащий только элементов, которые не проходят этот тест.

let data = [
  { item: 'foo bar' },
  { item: 'bar baz' },
  { item: 'baz buzz' },
];
const req = { params: { item: 'bar-baz' }};

data = data.filter(function(todo){
    return todo.item.replace(/ /g, '-') !== req.params.item;
});
console.log(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...