检查数组中有多少元素作为键存在于 javascript 中的对象中



>我有一个对象

const Obj = {
2016-07-04: 264464,
2016-07-05: 266458,
2016-07-07: 272720,
2016-07-08: 274352,
2016-07-11: 290110,
2016-07-12: 283604,
2016-07-14: 290356,
2016-07-19: 298452,
2016-07-22: 301793,
2016-07-24: 308439,
2016-07-25: 311762,
2016-07-27: 315518,
2016-07-28: 317712,
2016-07-29: 322961,
2016-07-30: 312415,
2016-07-31: 322962,
2016-08-02: 328265,
2016-08-06: 322963,
2016-08-08: 341632,
2016-08-15: 354271,
2016-08-16: 358108,
2016-08-26: 380486,
2016-08-27: 380495,
2016-08-28: 385578,
2016-08-29: 388026,
2016-08-30: 391542,
2016-09-03: 385575,
2016-09-04: 417260,
2016-09-05: 413816,
2016-09-06: 417249,
2016-09-07: 417244,
2016-09-08: 420326,
2016-09-17: 403546,
}

我有一个数组

const daysToCheck = [
"2016-09-01",
"2016-09-02",
"2016-09-03",
"2016-09-04",
"2016-09-05",
"2016-09-06",
"2016-09-07",
"2016-09-08",
];

我想找出数组中的每个项目是否存在于对象的键中,以及在对象的键中找到了数组中有多少项。

您可以使用.filter方法找到两个数组的交集。比上面建议的更容易的方法。

let arr = Object.keys(Obj).filter( value => daysToCheck.includes(value));

Object.keys(Obj)提取Obj对象的键,.filter返回一个数组,其中value个既在daysToCheck中,又在Obj中。

在数组上使用reduce函数,对于每次迭代,检查Obj是否具有当前数组元素的值。如果有,则累加器值递增 1。

const Obj = {
"2016-07-04": 264464,
"2016-07-05": 266458,
"2016-07-07": 272720,
"2016-07-08": 274352,
"2016-07-11": 290110,
"2016-07-12": 283604,
"2016-07-14": 290356,
"2016-07-19": 298452,
"2016-07-22": 301793,
"2016-07-24": 308439,
"2016-07-25": 311762,
"2016-07-27": 315518,
"2016-07-28": 317712,
"2016-07-29": 322961,
"2016-07-30": 312415,
"2016-07-31": 322962,
"2016-08-02": 328265,
"2016-08-06": 322963,
"2016-08-08": 341632,
"2016-08-15": 354271,
"2016-08-16": 358108,
"2016-08-26": 380486,
"2016-08-27": 380495,
"2016-08-28": 385578,
"2016-08-29": 388026,
"2016-08-30": 391542,
"2016-09-03": 385575,
"2016-09-04": 417260,
"2016-09-05": 413816,
"2016-09-06": 417249,
"2016-09-07": 417244,
"2016-09-08": 420326,
"2016-09-17": 403546,
}

const daysToCheck = [
"2016-09-01",
"2016-09-02",
"2016-09-03",
"2016-09-04",
"2016-09-05",
"2016-09-06",
"2016-09-07",
"2016-09-08",
];
const keysInArray = daysToCheck.reduce((acc, cur) => {
if (Obj[cur]) {
acc++;
}
return acc;
}, 0);
console.log(keysInArray);

最新更新