我似乎无法理解这一行代码(JavaScript)的含义

时间:2019-06-13 23:18:47

标签: javascript node.js express

我已经阅读了很多教程和帖子,但是我却越来越困惑。用Laymen的术语(极其简单和明确的术语),下面的代码做什么?什么是replace(/ / g,'-')?什么是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 个答案:

答案 0 :(得分:2)

它将todo.item字符串中的所有空格变为破折号,将替换后的字符串与req.params.item进行比较,如果它们不同则返回true。例如,如果todo.itemfoo bar,而req.params.itemfoo-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);

相关问题