Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算一个值在数组-javascript-angular-lodash中出现的次数_Javascript_Angularjs_Lodash - Fatal编程技术网

计算一个值在数组-javascript-angular-lodash中出现的次数

计算一个值在数组-javascript-angular-lodash中出现的次数,javascript,angularjs,lodash,Javascript,Angularjs,Lodash,我有两个javascript数组 var openDates = ["6/14/2015", "6/15/2015", "6/16/2015", "6/17/2015", "6/18/2015", "6/19/2015", ...] var entries = ["6/16/2015", "6/16/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015",

我有两个javascript数组

var openDates = ["6/14/2015", "6/15/2015", "6/16/2015", "6/17/2015", "6/18/2015", "6/19/2015", ...]

var entries = ["6/16/2015", "6/16/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", ...]
如何计算格式中的条目中出现openDates的次数

var entriesPerDay = [0, 0, 10, 2, 16, 18, 20, ...]

我已经安装了lodash,但无法找到它。如果没有匹配项,我需要返回0值。

我现在能想到的

var openDates = ["6/14/2015", "6/15/2015", "6/16/2015", "6/17/2015", "6/18/2015", "6/19/2015"]

var entries = ["6/16/2015", "6/16/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015"]

var entriesPerDay = [];

for(var i = 0; i < openDates.length; i++) {
 var currDate = openDates[i];
 var temp = _.filter(entries, function(date) {
   return date === currDate;   
 });
 entriesPerDay.push(temp.length);
}
var openDates=[“6/14/2015”、“6/15/2015”、“6/16/2015”、“6/17/2015”、“6/18/2015”、“6/19/2015”]
风险值分录=[“2015年6月16日”、“2015年6月16日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”,"6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015"]
var entriesPerDay=[];
对于(var i=0;i
对于上面的示例,entriesPerDay是:[0,0,2,0,42,0]

PS:我使用的是lodash,正如你在问题中所说的,你有lodash


PPS:如果有效,请接受并投票。

下面的示例将帮助您开始并了解如何实现这一点

在本例中,将在数组上使用来比较值

var openDates=[“6/14/2015”、“6/15/2015”、“6/16/2015”、“6/17/2015”、“6/18/2015”、“6/19/2015”]
风险值分录=[“2015年6月16日”、“2015年6月16日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015"]
函数countEntries(arr1、arr2){
var计数,总计=[];
arr1.forEach(功能(日期){
计数=0;
arr2.forEach(功能(条目){
计数+=日期==条目?1:0;
});
推(计数)总数;
});
返回总数;
}
console.log(countEntries(openDates,entries));
用于O(n)解决方案,而不是(在^2上):

var openDates=[“6/14/2015”、“6/15/2015”、“6/16/2015”、“6/17/2015”、“6/18/2015”、“6/19/2015”];
风险值分录=[“2015年6月16日”、“2015年6月16日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015"];
函数countEntries(打开、现有){
var openHash={};
var entriesHash={};
对于(变量i=0;i

您可以使用lodash的和来完成此操作。您可以使用而不是u.at()来获取一个对象,该对象将找到的条目(至少出现1次)作为属性名

复杂性-O(n)

var openDates=[“6/14/2015”、“6/15/2015”、“6/16/2015”、“6/17/2015”、“6/18/2015”、“6/19/2015”];
风险值分录=[“2015年6月16日”、“2015年6月16日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6月18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”、“2015年6/18日”6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015"];
var计数=(条目)
.countBy(函数(条目){return entry})//计算每个条目发生的次数
.at(openDates)//获取openDates中出现的键的值
.map(函数(计数){返回计数| | 0})//映射未定义(未找到)T00
.value();//获取值
var countsObject=389;(条目)
.countBy(函数(条目){return entry})//计算每个条目发生的次数
.pick(openDates)//获取openDates中显示的键的值
.value();//获取值
document.write(“”.at():“+JSON.stringify(counts));
文件。写入(“
”); document.write(“”.pick():“+JSON.stringify(countsObject));
使用和:


openDates
中选取一个项目,将其与
条目中的每个项目进行比较,如果匹配,则增加计数。有什么困难吗?@Jesse你为什么这么说?我不明白你的意思……但为什么要删除你的答案?只是我使用了lodash,而你使用了lodash
var openDates = ["6/14/2015", "6/15/2015", "6/16/2015", "6/17/2015", "6/18/2015", "6/19/2015"];
var entries = ["6/16/2015", "6/16/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015", "6/18/2015"];

function countEntries(open, existing) {
  var openHash = {};
  var entriesHash = {};

  for(var i = 0; i < open.length; i ++){
    openHash[open[i]] = 0;
  }

  for(i = 0; i < existing.length; i ++){
    if(entriesHash.hasOwnProperty(entries[i])){
      entriesHash[entries[i]] ++;
    }else{
      entriesHash[entries[i]] = 1;
    }    
  }

  var result = [];
  for(var date in openHash){
    if(openHash.hasOwnProperty(date)){
      if(entriesHash[date]){
        openHash[date] = entriesHash[date];
      }
      result.push(openHash[date]);
    }
  }

  return result;
}

console.log(countEntries(openDates, entries));
_.map(openDates, function(item) {
    return _.filter(entries, function(entry) {
        return item === entry;
    }).length;
});