将元素从一个对象复制到另一个对象并将其显示为 json

Copy elements from one object to another and show it as json

我有一个对象,我想在其中添加新元素并删除一些元素

console.log("bookmark", bookmark)
[
   {
       "__type": "BookmarksApp.Bookmark",
       "BookmarkID": 1,
       "name": "San Diego, CA",
       "xmin": "-13048800",
       "ymin": "3844800",
       "xmax": "-13037800",
       "ymax": "3870400",
       "UserID": 6
   },
   {
       "__type": "BookmarksApp.Bookmark",
       "BookmarkID": 2,
       "name": "Redlands, California",
       "xmin": "-13052100",
       "ymin": "4024900",
       "xmax": "-13041100",
       "ymax": "4050500",
       "UserID": 6
   }
]

我试过很多方法,但对我不起作用,其中一种是这样的:-

 bookmarkjson = {

                extent: {
                    xmin: JSON.stringify(bookmark.map(a => a.xmin)),
                    ymin: JSON.stringify(bookmark.map(a => a.ymin)),
                    xmax: JSON.stringify(bookmark.map(a => a.xmax)),
                    ymax: JSON.stringify(bookmark.map(a => a.ymax)),
                "spatialreference": {
                "wkid": 102100,
                "latestwkid": 3857
               },
             },
         name:bookmark.map(a => a.name),

 };

结果是这样的所有对象都在一个对象中如何编辑它:-

{
    "xmin": "[\"-13048800\",\"-13052100\"]",
    "ymin": "[\"3844800\",\"4024900\"]",
    "xmax": "[\"-13037800\",\"-13041100\"]",
    "ymax": "[\"3870400\",\"4050500\"]",
    "spatialreference": {
        "wkid": 102100,
        "latestwkid": 3857
    }
}

怎么改成这样

 {
                    first: {
                        "extent": {
                            "xmin": -12975100,
                            "ymin": 3993900,
                            "xmax": -12964100,
                            "ymax": 4019500,
                            "spatialReference": {
                                "wkid": 102100,
                                "latestWkid": 3857
                            }
                        },
                        "name": "Palm Springs, CA"
                    },
                    second: {
                        "extent": {
                            "xmin": -13052100,
                            "ymin": 4024900,
                            "xmax": -13041100,
                            "ymax": 4050500,
                            "spatialReference": {
                                "wkid": 102100,
                                "latestWkid": 3857
                            }
                        },
                        "name": "Redlands, California"
                    },
                   
                }

书签是动态的可以有2个以上的对象

你可以试试这样的方法。

let bookmarks = [
   {
       "__type": "BookmarksApp.Bookmark",
       "BookmarkID": 1,
       "name": "San Diego, CA",
       "xmin": "-13048800",
       "ymin": "3844800",
       "xmax": "-13037800",
       "ymax": "3870400",
       "UserID": 6
   },
   {
       "__type": "BookmarksApp.Bookmark",
       "BookmarkID": 2,
       "name": "Redlands, California",
       "xmin": "-13052100",
       "ymin": "4024900",
       "xmax": "-13041100",
       "ymax": "4050500",
       "UserID": 6
   }
];

let result = bookmarks.map(x => { 
  let extend = 
  { 
    xmin: x.xmin, 
    ymin: x.ymin, 
    xmax: x.xmax, 
    ymax: x.ymax,
    spatialreference: {
      wkid: 102100,
      latestwkid: 3857
     }, 
     name: x.name 
  };
  return { extend: extend };
});

console.log(result)

您不应该使用 stringify 将其类型转换为字符串

您有一个对象数组,您想要创建另一个具有相同长度的对象。所以使用地图

let newBookmarkObj = bookmarkObj.map(item => {
  return {
          extend: {
            xmin: item.xmin,
            ymin: item.ymin,
            xmax: item.xmax,
            ymax: item.ymax,
            spatialReference: {
                wkid: 102100,
                latestWkid: 3857
            }
          },
          name: item.name
}
})

试试这个 :

const arr = [
   {
       "__type": "BookmarksApp.Bookmark",
       "BookmarkID": 1,
       "name": "San Diego, CA",
       "xmin": "-13048800",
       "ymin": "3844800",
       "xmax": "-13037800",
       "ymax": "3870400",
       "UserID": 6
   },
   {
       "__type": "BookmarksApp.Bookmark",
       "BookmarkID": 2,
       "name": "Redlands, California",
       "xmin": "-13052100",
       "ymin": "4024900",
       "xmax": "-13041100",
       "ymax": "4050500",
       "UserID": 6
   }
];

const result = {};

arr.forEach((obj, index) => {
    result[index + 1] = {
    extent: {
        xmin: obj.xmin,
      ymin: obj.ymin,
      xmax: obj.xmax,
      ymax: obj.ymax,
      spatialReference: {
        wkid: 102100,
        latestWkid: 3857
      }
    },
    name: obj.name
  };
});

console.log(result);