繁体   English   中英

无法减少对象内部的数组

[英]Cannot reduce array inside of an object

我试图减少对象内部的数组。 我回来了

push is not a function 

我以空数组开始,并创建了一个add函数作为第一个参数传递。

function add(a,b) {
        return a +b;
}

var navBarArray = [];
var listArray = [];

var mapping = {
  ".navbar": navBarArray,
  ".list-group": listArray
};

我在映射对象上尝试了这种方法,但是会产生错误

var mapping = {
  ".navbar": Math.round(navBarArray.reduce(add,0) ),
  ".list-group": listArray
};

但是,我得到的推送不是控制台中的功能。

下面是我的函数,将值传递给数组。 我可以在函数内部创建一个变量,并在那里减少它。 但是,这限制了对我的变量的访问,并且在我继续操作时会肿我的功能。

  Object.keys(mapping).forEach(function(selector) { 
      $(selector).hover(function(evt) {
        console.log('mapping',mapping);
        console.log('selector',selector);
        enteredTime = new Date();
      }, function() {
        var ctime = new Date();
        var time = (ctime.getTime() - enteredTime.getTime())/1000;
        mapping[selector].push(time);

        // *********** this works but not where I need it to*******
        var reduce = Math.round(navBarArray.reduce(add,0) );
        console.log(reduce);
        });
    })

更改您的映射对象,使其在数组和总计中具有单独的位置:

var mapping = {
    ".navbar": {
        total: 0,
        times: []
    },
    ".list-group": {
        total: 0,
        times: []
    }
}

然后,您可以进行mapping[selector].times.push(time) ,并将总数与:

mapping[selector].total = mapping[selector].times.reduce(add, 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM