-
Notifications
You must be signed in to change notification settings - Fork 21
/
index.js
77 lines (68 loc) · 1.89 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const data = require("./data.json");
const codes = data.map((item) => item.zipCode);
function getDataForZipCode(zipCode) {
const zip = String(zipCode);
return zip && zip.length === 5 && codes.includes(zip)
? data.find((item) => item.zipCode === zip)
: null;
}
function getSubDistrictNames(zipCode) {
const dataForZipCode = getDataForZipCode(zipCode);
return dataForZipCode
? dataForZipCode.subDistrictList.map((item) => item.subDistrictName)
: [];
}
function getDistrictNames(zipCode) {
const dataForZipCode = getDataForZipCode(zipCode);
return dataForZipCode
? dataForZipCode.districtList.map((item) => item.districtName)
: [];
}
function getProvinceName(zipCode) {
const dataForZipCode = getDataForZipCode(zipCode);
return dataForZipCode ? dataForZipCode.provinceList[0].provinceName : null;
}
function getAutoSuggestion(zipCode, subDistrict) {
const zip = String(zipCode);
if (!zip || zip.length !== 5 || !codes.includes(zip)) {
return {
subDistrict: null,
districtName: null,
provinceName: null,
zipCode: null,
};
}
const dataForZipCode = getDataForZipCode(zipCode);
if (!subDistrict) {
return {
subDistrict: dataForZipCode.subDistrictList.map(
(item) => item.subDistrictName
),
districtName: null,
provinceName: getProvinceName(zip),
zipCode: zip,
};
}
const { districtId } =
dataForZipCode.subDistrictList.find(
(item) => item.subDistrictName === subDistrict
) || {};
const { districtName } =
dataForZipCode.districtList.find(
(item) => item.districtId === districtId
) || {};
return {
subDistrict,
districtName,
provinceName: getProvinceName(dataForZipCode.zipCode),
zipCode: zip,
};
}
module.exports = {
getSubDistrictNames,
getDistrictNames,
getProvinceName,
getAllData: () => data,
getAutoSuggestion,
getDataForZipCode,
};