数据相同根据属性时间大小覆盖原来目标数据 Ps:只能使用push数组时候使用

29 阅读1分钟
MapaisData = [
    {unixTime:111,mmsi:1},
    {unixTime:222,mmsi:1}
]
MapaisData = newData.reduce((accumulator, currentValue) => {
        // 查找当前mmsi是否已存在于累积器中
        let existingIndex = accumulator.findIndex(item => item.mmsi === currentValue.mmsi)

        // 如果已存在,并且当前记录的time更新,则替换
        if (existingIndex !== -1 && currentValue.unixTime >= accumulator[existingIndex].unixTime) {
            // 113.46981969425,22.729010789078    113.48176220279103 22.732025690668323
            // 国际坐标转换成中国坐标
            // let wgs84togcj02 = Coordtransform.wgs84togcj02(newData[existingIndex].oldLon, newData[existingIndex].oldLat)

            accumulator[existingIndex] = currentValue
        }
        // 如果不存在,则添加到累积器中
        else if (existingIndex === -1) {
            accumulator.push(currentValue)
        }

        // 无需改变累积器,直接返回
        return accumulator
    }, [])