Javascript 在具有纬度和经度最小值和最大值以及网格值 return 的 table 中查找

Javascript lookup in a table that has minimum and maximum values of latitude and longitude and return the grid value

我有一个从 json 获得的纬度/经度对。要求是我需要 return 对应于 latitude/longitude 对的网格值。 我有这个 table,它具有相应值的纬度和经度的最小值和最大值。它看起来像这样:

我是 javascript 的新手。在检查传入的纬度和经度是否在每个网格值的范围内之后,我如何编写一个函数/代码来获取值?感谢您的帮助。

我不确定我是否正确解释了你的问题,但试试这个。

const [latitude, longitude] = [117.5783, -33.6768];

function getData() {
    const tbody = document.querySelector("tbody");
    const rows = [...tbody.rows];
    const data = rows.map(row => {
        const [minLng, minLat, maxLng, maxLat, gridName] = [...row.cells].map(
            cell => cell.textContent
        );

        return {
            minLng: +minLng,
            minLat: +minLat,
            maxLng: +maxLng,
            maxLat: +maxLng,
            gridName
        };
    });

    return data;
}

function getGridValue({ latitude, longitude }) {
    const data = getData();

    const item = data.find(
        item =>
            (item.minLat >= latitude || item.maxLat <= latitude) ||
            (item.minLng >= longitude || item.maxLng <= longitude)
    );

    if (item) {
        return item.gridName;
    }

    return null;
}
const value = getGridValue({ latitude, longitude });

console.log(value);
<table>
    <thead>
        <tr>
            <th>MIN_LNG</th>
            <th>MIN_LAT</th>
            <th>MAX_LNG</th>
            <th>MAX_LAT</th>
            <th>GRIDname</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>117.5783</td>
            <td>-33.6764</td>
            <td>117.5787</td>
            <td>-33.6766</td>
            <td>5c</td>
        </tr>
        <tr>
            <td>117.5783</td>
            <td>-33.6766</td>
            <td>117.5785</td>
            <td>-33.6768</td>
            <td>4c</td>
        </tr>
        <tr>
            <td>117.5783</td>
            <td>-33.6768</td>
            <td>117.5785</td>
            <td>-33.6770</td>
            <td>3c</td>
        </tr>
    </tbody>
</table>

首先我模拟了你从jsonconst [latitude, longitude] = [117.5783, -33.6768];

得到的一对数据

getData函数从htmltable中获取数据,所以我不知道数据的来源。我这样做是因为使用数组和对象比使用 DOM 节点

更容易

函数 getGridValue 搜索数据,如果满足条件,它将 return gridName 属性 的值,否则它将 return null

再次,我希望我已经正确解释了你的问题,希望你觉得它有用

非常感谢 user615274 给我的见解。我稍微调整了代码,这是我在您的代码帮助下生成的最终代码。

grid_table = [
{"minLng":"117.5783","minLat":"-33.6764","maxLng": "117.5787","maxLat":"-33.6766","gridName" :"5c"},
{"minLng":"117.5783","minLat":"-33.6766","maxLng":"117.5785","maxLat":"-33.6768","gridName":"4c"},
{"minLng":"117.5783","minLat":"-33.6768","maxLng":"117.5785","maxLat":"-33.6770","gridName":"3c"}
]

function getGridValue({ latitude, longitude }) {
    const data = [...grid_table];

    const item = data.find(
        item =>
            (latitude >= item.minLat  && longitude >= item.minLng) &&
            (latitude <= item.maxLat && longitude <= item.maxLng)
    );

    if (item) {
        return item.gridName;
    }

    return null;
}
const [latitude, longitude] = ["-33.6769","117.5784"];
const value = getGridValue({ latitude, longitude});

document.write(value);

非常感谢。如果您有任何建议或进一步的想法,请告诉我。