Просто переберите другой 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);
Я думаю, что эти примеры дадут вам основную идею о том, как сделать это.
Простите мне за утверждение выхода за край, очевидного здесь, но... Я видел, что этот вид вещи происходит много раз прежде, когда объект (.o) и заголовок (.h) файлы выходят из синхронизации. Особенно относительно виртуальных методов.
Рассмотрите: объектный файл компилируется с заголовком:
class Foo { virtual void f(); };
Но затем заголовок изменяется на:
class Foo { virtual void g(); virtual void f(); };
И для следующего объектного файла, предположения компилятора о том, где f () расположен в vtable классе, являются неправильными.
Часто просто перекомпилировав мир (все!) поможет.
Удостоверьтесь, что Вы не выбрали в своем проекте старую версию библиотеки, Т.е. (как упомянутый Adam), Вы выбрали более старую отладочную версию вместо текущей версии выпуска или наоборот.
Вы, возможно, должны были бы восстановить.
Также не упустите условную компиляцию, где макрос мог бы получить #defined, или #undef'd в какой-то момент (Другое решение может иметь некоторые макросы или спроектированный #defines). Несколько раз могло бы быть полезно удалить Ваш .lib .obj, и предварительно скомпилированные кэши заголовка с восстанавливают.
Существует удаленная возможность, что что-то испорчено в Вашем IDE или конфигурации проекта, где Вы, возможно, должны были бы воссоздать Вас проект с нуля.
Я не слишком знаком с MS VC, можно ли добавить файл библиотеки проекта из другого решения? Например, в Разработчике Borland C++ можно определить группы проекта и создавать/делать несколько проектов, я всегда помещал проекты для библиотек, которыми я пользуюсь в своей группе проекта программы, таким образом, все добирается, когда я создаю.
Удостоверьтесь, что Вы компилируете в Режиме отладки и не режиме Release. При попытке отладить программу в режиме Release, то данные, которые Вы возвращаете от отладчика, будут мусором из-за оптимизации.
Это происходит по всей вероятности из-за несовместимых соглашений о вызовах, где у библиотеки и вызывающей стороны есть различные идеи о расположении стека.
Смотрите на MSDN для большего количества информации.
Я не забываю видеть такие вещи, когда членское выравнивание структуры (/Zp переключатель компилятора) двоичных файлов отличалось. Вы могли проверить это, также.
Установка его через пакет #pragma, а не через настройки проекта должна быть более безопасной.