JavaScript使用reduce从数组创建带有计数的对象

时间:2018-03-31 21:09:34

标签: javascript reduce

我试图解决这个小问题,我需要使用parseMetaData()创建一个具有每个项目计数的对象。

我以为我理解reduce是如何工作的,使用函数将多个值减少到一个,但我无法弄清楚它是如何工作的。

任何想法或建议?我真的很感激。

reduce

2 个答案:

答案 0 :(得分:2)

如您所见,您需要一个对象作为数组项目计数的结果集。

为了获得结果,您可以使用默认值零来添加一个来计算实际值,同时使用给定名称作为计数属性。

var people = ['josh', 'dan', 'sarah', 'joey', 'dan', 'josh', 'francis', 'dean'],
    counts = people.reduce(function (c, p) {
        c[p] = (c[p] || 0) + 1;
        return c;
    }, Object.create(null));
    
console.log(counts);

答案 1 :(得分:0)

var express         = require("express");
var path            = require("path");
var logger          = require("morgan");
// var cookieParser = require("cookie-parser");
var bodyParser      = require("body-parser");
var neo4j           = require("neo4j-driver").v1;

var app             = express();


// 
// <script src="lib/browser/neo4j-web.min.js"></script>


//view engine setup
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extened: false}));
// app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));

var driver = neo4j.driver("bolt://locthost", neo4j.auth.basic("neo4j", "test"));
var session = driver.session();

//home route
app.get('/', function(req, res){
    session 
        .run("MATCH (n) RETURN n")
        .then(function(result){
            result.records.forEach(function(records){
                console.log(records._fields[0]);
            });
        })
        .catch(function(error){
            console.log(error);
        });
    res.render("index");
});


app.listen(3000);
console.log('Server has started');

module.export = app;

工作codepen