我试图检查数组中是否存在某些内容。
这是我制作对象的地方......
function makeEventObject(eventName, idzName, classzName) {
function eventDetails(eventName, idzName, classzName) {
this.eventName = eventName;
this.idzName = idzName;
this.classzName = classzName;
}
let eventObject = new eventDetails(eventName, idzName, classzName);
console.log(Object.getOwnPropertyNames(eventObject));
console.log(eventObject.idzName);
// console.log(eventObject);
return eventObject;
}
我可以访问eventObject.keys或eventObject.properties>>的console.log 我无法弄清楚的是,我想把它推到一个阵列。但有条件。如果它已经在阵列中,那么就不要添加。但条件也基于其他eventObject.properties。例如:第一次检查是否在数组中存在。因为数组最初是空的,所以应该返回= undefined,SO添加第1项。但是当第二个项目通过时,如果eventObject.idZName&& eventObject.classzName与第二个不添加相同。如果.idZname不同,并且.classZname相同,则用相同的.classZname替换数组元素。如果.classZname和.idZname都与数组中的内容不同或未定义。加。
它是一系列过滤器,我看到它可以实现功能。下面是推送阵列功能和检查功能。我试图将两者放在同一个函数中,但我不断得到.push()错误。
function makeEventList(eventObject) {
eventList.push(eventObject);
console.log(eventList);
let a = eventList.length;
console.log(a);
}
function eventChecker(eList, eventObject){
var exists = eList.find(function(eventObject){return eventObject.eventName === eList[eventObject.eventName];});
console.log(exists);
}
任何想法......以及我做错了什么?到目前为止尝试了IF语句,.includes(),。filter(),. double()。
目前我无法阅读'找到的财产; .. 小提琴上有实时拷贝 - > https://jsfiddle.net/j1xtvmLy/461/
答案 0 :(得分:2)
基于你的jsfiddle,eList未定义,因为你没有将参数传入 eventChecker 调用。
确保当您依赖于在函数调用中传递参数的参数时。
同样,您的let eList = makeEventList(eventObject);
会假定它会返回一个数组,但您尚未在函数makeEventList
中创建或返回数组