程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在给定的对象数组中删除和添加新对象时格式错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在给定的对象数组中删除和添加新对象时格式错误?

开发过程中遇到在给定的对象数组中删除和添加新对象时格式错误的问题如何解决?下面主要结合日常开发的经验,给出你关于在给定的对象数组中删除和添加新对象时格式错误的解决方法建议,希望对你解决在给定的对象数组中删除和添加新对象时格式错误有所启发或帮助;

我正在使用函数组件在 React Js 中工作。我需要删除与索引对应的数组对象,并将新的数组对象添加到相同的索引。下面给出了多维数组对象的示例。我尝试了一些方法,但没有给我正确的答案。我认为问题很明显。如果有任何疑问,请务必询问。

原始数组对象

[
    {
        "area": "Zone1","cartamount": "","extra_shipPingamount": "","polygon": [
            [
                {
                    "lat": 11.174036305817275,"lng": 76.3754534171875
                },{
                    "lat": 10.526644973776667,"lng": 76.6061663078125
                },{
                    "lat": 10.75339097376777,"lng": 77.47957939375
                }
            ],[
                {
                    "lat": 11.28179683077826,"lng": 75.89857811201172
                },{
                    "lat": 10.774977003245414,"lng": 76.16774315107422
                },{
                    "lat": 11.292570666429365,"lng": 76.91481346357422
                }
            ]
        ],"shipPingamount": ""
    },{
        "area": "Zone2","lng": 77.47957939375
                }
            ]
        ],{
        "area": "Zone3","polygon": [
            [
                {
                    "lat": 10.755303390976334,"lng": 76.4073785765625
                },{
                    "lat": 10.182723497824039,"lng": 76.4018854125
                },{
                    "lat": 10.150282003909208,"lng": 77.3082574828125
                },{
                    "lat": 10.74990667635129,"lng": 77.291777990625
                },{
                    "lat": 11.062755098084468,"lng": 77.0445856078125
                }
            ]
        ],"shipPingamount": ""
    }
]

已编辑的对象数组

[{
        "area": "Zone1","polygon": [
            [{
                    "lat": 11.174036305817275,[{
                    "lat": 9.62536187827369,"lng": 76.88150729970702
                },{
                    "lat": 9.023680418742487,"lng": 76.77164401845702
                },{
                    "lat": 9.299749165335365,"lng": 78.76737918691406
                }
            ]
        ],"polygon": [
            [{
                    "lat": 10.755303390976334,"shipPingamount": ""
    }
]

在给定的对象数组中删除和添加新对象时格式错误

在给定的对象数组中删除和添加新对象时格式错误

给出的是我试过的代码,但它给出了错误的格式。

 const onEdit = useCallBACk(() => {

        if (polygonRef.current) {
            const nextPath = polygonRef?.current
                .getPath()
                .getArray()
                .map((latLng: any) => {
                    return { lat: latLng.lat(),lng: latLng.lng() };
                });
            setPath(nextPath);
        //   const  nextPath=[{
        //         "lat": 9.62536187827369,//         "lng": 76.88150729970702
        //     },//     {
        //         "lat": 9.023680418742487,//         "lng": 76.77164401845702
        //     },//     {
        //         "lat": 9.299749165335365,//         "lng": 78.76737918691406
        //     }]
            let getMapzones = localstorage.getItem("mapZone");
            if (typeof getMapzones == 'String') {
                let localZone = JsON.parse(getMapzones);
                let temPDAta = localZone?.map((item: any,key: any) => {
                    if (key == coordindeX) {
                        return item?.polygon?.map((el: any,index: any) => {
                            if (index == curIndeX) {
                                el = nextPath
                                return el
                            }
                            else {
                              return   el
                            }
                        })

                    }
                    else {
                        return item
                    }


                })
                localstorage.setItem('mapZone',JsON.Stringify(temPDAta))
                
            }
        }
    },[coordindex,curIndex])


我的代码输出 丢失了与索引对应的数组中的其他值(area、cartamount、extra_shipPingamount、shipPingamount)和其他多边形值。新数组对象替换整个数组。

[
    [
        [{
                "lat": 9.62536187827369,"lng": 76.88150729970702
            },{
                "lat": 9.023680418742487,"lng": 76.77164401845702
            },{
                "lat": 9.299749165335365,"lng": 78.76737918691406
            }
        ]
    ],"shipPingamount": ""
    }
]

解决方法

为什么不尝试拼接数组呢?在这种情况下不需要映射数组,因为 splice 将适用于您的原始数组。如果你不愿意修改你原来的数组,你可以把它存储在一个临时数组中,然后操作这个临时数组。

arr.splice(indexToBeManipulated,1,newvalue);

.splice() 将第一个参数作为您想要开始更改的索引,第二个参数如果作为 0 传递将不会删除从 indexToBeManipulaed 开始的任何元素。但在您的情况下,由于您想从相应的索引中删除一个值,因此第二个参数应该是 1,第三个参数可以是您想要附加到 indexToBeManipulaed 的新值。

查看此链接以更好地理解 .splice() :https://www.w3schools.com/jsref/jsref_splice.asp

大佬总结

以上是大佬教程为你收集整理的在给定的对象数组中删除和添加新对象时格式错误全部内容,希望文章能够帮你解决在给定的对象数组中删除和添加新对象时格式错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。