Вы можете сделать это, используя Reduce.
здесь мы используем team name
в качестве ключевого свойства и, проверяя, находится ли он уже в выходном объекте, нажимаем score
и course
в свойстве раундов этого конкретного командного ключа, если нет, то мы создаем новый ключ.
const rounds = [
{team: "Dropkick Murphies", score: 75, course: 17},
{team: "Dropkick Murphies", score: 62, course: 24},
{team: "Dropkick Murphies", score: 69, course: 26},
{team: "Gigantic", score: 67, course: 26},
{team: "Gigantic", score: 65, course: 17},
{team: "Gigantic", score: 63, course: 24}
];
let op = rounds.reduce((output,current)=>{
if(output[current.team]){
output[current.team].rounds.push({
score : current.score,
course: current.score
})} else {
output[current.team] = {
team: current.team,
rounds: [{score:current.score, course:current.course}]
}
}
return output
},{})
console.log(Object.values(op))
Необходимо назвать статистику (2) на файле и затем использовать макрос S_ISREG на st_mode.
Что-то как (адаптированный из этого ответа):
#include <sys/stat.h>
struct stat sb;
if (stat(pathname, &sb) == 0 && S_ISREG(sb.st_mode))
{
// file exists and it's a regular file
}
Можно использовать портативное устройство boost::filesystem
(Стандартная библиотека C++, возможно, не сделала этого вплоть до недавнего введения станд.:: файловая система в C++ 17):
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
#include <iostream>
int main() {
using namespace boost::filesystem;
path p("/bin/bash");
if(is_regular_file(p)) {
std::cout << "exists and is regular file" << std::endl;
}
}
Спасибо всем за справку, я попробовал
while ((dirp = readdir(dp)) != NULL) {
if (!S_ISDIR(dirp->d_type)) {
...
i++;
}
}
И это хорошо работает.=)
Сам C++ не имеет дело с файловыми системами, таким образом, нет никакого портативного пути на самом языке. Определенные для платформы примеры stat
для *отклоняют (как уже отмечено Martin против Löwis) и GetFileAttributes
для Windows.
Кроме того, если у Вас не аллергия на Повышение, там является довольно межплатформенным boost::filesystem
.