将对象推入JavaScript中的数组

时间:2018-11-28 09:15:48

标签: javascript arrays react-native

对象没有插入数组。

  groupEventsArray=[]
  groupEvents=(eventOnDate)=>{
    for(i=0;i<eventOnDate.events.length;i++){
      for(j=0;j<eventOnDate.events.length;j++){
        if(eventOnDate.events[i].start==eventOnDate.events[j].start)
        this.groupEventsArray.push(eventsOnDate.events[i])
      }
    }
    console.log(JSON.stringify(this.groupEventsArray))
  }

没有错误出现,但是我认为它陷入了无限循环。 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

考虑使用forEach()方法。 forEach()方法为数组中的每个元素依次调用提供的函数。

注意:forEach()不会对没有值的数组元素执行该功能。

语法

array.forEach(function(currentValue, index, arr), thisValue)

示例

var numbers = [4, 9, 16, 25];
function myFunction(item, index) {
  console.log(item, index);
}

numbers.forEach(myFunction)

像这样在数组上循环有助于避免无限循环。

答案 1 :(得分:1)

听起来像一个基本的组阵列,关键问题在于。您可以通过以下方式进行操作:

const data = {
  fullDate: '2018-10-26T09:30:00.000Z',
  events: [
    {
      eventId: '43460',
      start: '1540525500',
    },
    {
      eventId: '43461',
      start: '1540525500',
    },
    {
      eventId: '43462',
      start: '1540525500',
    },
    {
      eventId: '43463',
      start: '1540525510',
    },
  ],
};

const createKey = (t) => t.start;
console.log(
  Object.values(
    data.events
      .map((o) => [o, createKey(o)])
      .reduce((result, [item, key]) => {
        result[key] = result[key] || [];
        result[key].push(item);
        return result;
      }, {}),
  ),
);

但是问题可能是this one的重复项(查找不使用lodash的答案)