get-countries-info
Version:
Get countries, states, currency, language, phone code, ISO standards, etc.
57 lines (50 loc) • 1.67 kB
JavaScript
let data = require('../data.json');
export default function (args, prop) {
let query = {};
args.name ? query.name = args.name : null;
args.capital ? query.capital = args.capital : null;
args.currencies ? query.currencies = args.currencies : null;
args.region ? query.region = args.region : null;
function queryInArray(country) {
let result = 0,
argsCount = 0;
if (args.name) {
argsCount++;
if (country.name === args.name) result++;
} else if (args.capital) {
argsCount++;
if (country.capital === args.capital) result++;
} else if (args.currency) {
argsCount++;
country.currencies.forEach(prop => {
if (prop === args.currency) result++;
});
} else if (args.region) {
argsCount++;
if (country.region === args.region) result++;
} else if (args.ISO) {
argsCount++;
if (country.ISO.alpha3 === args.ISO) result++;
} else if (args.language) {
argsCount++;
country.languages.forEach(prop => {
if (prop === args.language) result++;
});
} else {
return true;
}
return result === argsCount;
}
let fetchedData = data.filter(queryInArray);
if (prop) {
let newFetchedData = [];
fetchedData.forEach(country => {
if (country.hasOwnProperty(prop)) {
newFetchedData.push(country[prop]);
}
});
return newFetchedData;
} else {
return fetchedData;
}
}