【问题标题】:Push object into an array in javascript [duplicate]在javascript中将对象推送到数组中[重复]
【发布时间】:2018-11-28 09:15:48
【问题描述】:

对象没有推入数组。

  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))
  }

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

【问题讨论】:

  • 你能分享eventOnDate数组吗?
  • 您已将变量用作groupEventsArray=[],但在推送时,您使用的是this.groupEventsArray 而不是groupEventsArray
  • but I think it is stucked in infinite loop 除非eventOnDate.events.length 是无限的......但你确实意识到你的代码无论如何都会推送每个eventOnDate.events
  • {"fullDate":"2018-10-26T09:30:00.000Z","events":[{"eventId":"43460","title":"第 1 天回顾和第 2 天会发生什么","description":"","start":"1540525500","end":"1540525800","location":"Aura 1&2","type":"normal","limit" :0,"remaining":-1,"url":"","networking_event":0,"alreadyRegistered":0,"sharing":1,"qa":1,"calendar":1},跨度>
  • 示例:eventOnDetail 是这样的

标签: javascript arrays react-native


【解决方案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)

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

【讨论】:

    【解决方案2】:

    听起来像一个基本的组数组关键问题。您可以通过以下方式进行:

    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 的答案)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2020-02-03
      • 1970-01-01
      • 2019-08-27
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多