Вызов функции переходит к неправильной функции

Просто переберите другой projects, а затем обведите employees, чтобы получить наибольшее значение.

var projects = [{
    projectName: "Winter",
    projectCode: "O0123",
    employee: [
      {title: "Mr.", name: "Tom", id: 1005, salary: 12345},
      {title: "Mr.", name: "Bunny", id: 1009, salary: 54321},
      {title: "Mr.", name: "Harris", id: 1010, salary: 23456}
    ]
  },
  {
    projectName: "Summer",
    projectCode: "P10406",
    employee: [
      {title: "Mr.", name: "Seth", id: 1006, salary: 1234},
      {title: "Mr.", name: "Sam", id: 1011, salary: 654321}
    ]
  }
];

var max = 0;
projects.forEach(p => p.employee.forEach(e => e.salary > max && (max = e.salary)));

console.log(max);

Если вы хотите получить employee, как вы упомянули в своем вопросе, а не зарплату, вы можете сделать это в основном то же самое, просто возвращая все object:

var projects = [{
    projectName: "Winter",
    projectCode: "O0123",
    employee: [
      {title: "Mr.", name: "Tom", id: 1005, salary: 12345},
      {title: "Mr.", name: "Bunny", id: 1009, salary: 54321},
      {title: "Mr.", name: "Harris", id: 1010, salary: 23456}
    ]
  },
  {
    projectName: "Summer",
    projectCode: "P10406",
    employee: [
      {title: "Mr.", name: "Seth", id: 1006, salary: 1234},
      {title: "Mr.", name: "Sam", id: 1011, salary: 654321}
    ]
  }
];

var max = {salary: 0};
projects.forEach(p => p.employee.forEach(e => e.salary > max.salary && (max = e)));

console.log(max);

Я думаю, что эти примеры дадут вам основную идею о том, как сделать это.

13
задан stakx supports GoFundMonica 30 December 2016 в 09:46
поделиться

5 ответов

Простите мне за утверждение выхода за край, очевидного здесь, но... Я видел, что этот вид вещи происходит много раз прежде, когда объект (.o) и заголовок (.h) файлы выходят из синхронизации. Особенно относительно виртуальных методов.

Рассмотрите: объектный файл компилируется с заголовком:

class Foo { virtual void f(); };

Но затем заголовок изменяется на:

class Foo { virtual void g(); virtual void f(); };

И для следующего объектного файла, предположения компилятора о том, где f () расположен в vtable классе, являются неправильными.

Часто просто перекомпилировав мир (все!) поможет.

15
ответ дан 1 December 2019 в 20:58
поделиться
  • Удостоверьтесь, что Вы не выбрали в своем проекте старую версию библиотеки, Т.е. (как упомянутый Adam), Вы выбрали более старую отладочную версию вместо текущей версии выпуска или наоборот.

  • Вы, возможно, должны были бы восстановить.

  • Также не упустите условную компиляцию, где макрос мог бы получить #defined, или #undef'd в какой-то момент (Другое решение может иметь некоторые макросы или спроектированный #defines). Несколько раз могло бы быть полезно удалить Ваш .lib .obj, и предварительно скомпилированные кэши заголовка с восстанавливают.

  • Существует удаленная возможность, что что-то испорчено в Вашем IDE или конфигурации проекта, где Вы, возможно, должны были бы воссоздать Вас проект с нуля.

  • Я не слишком знаком с MS VC, можно ли добавить файл библиотеки проекта из другого решения? Например, в Разработчике Borland C++ можно определить группы проекта и создавать/делать несколько проектов, я всегда помещал проекты для библиотек, которыми я пользуюсь в своей группе проекта программы, таким образом, все добирается, когда я создаю.

3
ответ дан 1 December 2019 в 20:58
поделиться

Удостоверьтесь, что Вы компилируете в Режиме отладки и не режиме Release. При попытке отладить программу в режиме Release, то данные, которые Вы возвращаете от отладчика, будут мусором из-за оптимизации.

2
ответ дан 1 December 2019 в 20:58
поделиться

Это происходит по всей вероятности из-за несовместимых соглашений о вызовах, где у библиотеки и вызывающей стороны есть различные идеи о расположении стека.

Смотрите на MSDN для большего количества информации.

7
ответ дан 1 December 2019 в 20:58
поделиться

Я не забываю видеть такие вещи, когда членское выравнивание структуры (/Zp переключатель компилятора) двоичных файлов отличалось. Вы могли проверить это, также.

Установка его через пакет #pragma, а не через настройки проекта должна быть более безопасной.

1
ответ дан 1 December 2019 в 20:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: