使用对象属性查找数组中的项目

时间:2018-04-05 01:46:25

标签: javascript

我试图检查数组中是否存在某些内容。

这是我制作对象的地方......

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/

1 个答案:

答案 0 :(得分:2)

基于你的jsfiddle,eList未定义,因为你没有将参数传入 eventChecker 调用。

确保当您依赖于在函数调用中传递参数的参数时。

同样,您的let eList = makeEventList(eventObject);会假定它会返回一个数组,但您尚未在函数makeEventList中创建或返回数组