Javascript 如何以现有对象为参照创建新对象

Javascript 如何以现有对象为参照创建新对象,javascript,object,properties,key-value,Javascript,Object,Properties,Key Value,我试图通过引用现有对象来创建一个新对象,如下所示 var c = { "pstn_id": 1, "pstn_ds": 1, "pstn_titl_tx": 1, "job_id": 1, "ov_co_id":1, "efcv_bgdt":1 }; var newObj ={}; Object.getOwnPropertyNa

我试图通过引用现有对象来创建一个新对象,如下所示

var c = {
        "pstn_id": 1,
        "pstn_ds": 1,
        "pstn_titl_tx": 1,
          "job_id": 1,
           "ov_co_id":1,
          "efcv_bgdt":1

                            };

var newObj ={};
Object.getOwnPropertyNames(c).forEach(function(ce){

  newObj["_"+ce] = "$"+ce;
});
console.log(newObj);
//console
[object Object] {
  _efcv_bgdt: "$efcv_bgdt",
  _job_id: "$job_id",
  _ov_co_id: "$ov_co_id",
  _pstn_ds: "$pstn_ds",
  _pstn_id: "$pstn_id",
  _pstn_titl_tx: "$pstn_titl_tx"
}
此控制台显示一个对象,但不按我使用的引用对象的顺序显示

为什么新创建的属性名称不符合循环顺序

我要按这个顺序

{
  _pstn_id: "$pstn_id",
  _pstn_ds: "$pstn_ds",
  _pstn_titl_tx: "$pstn_titl_tx",
  _job_id: "$job_id",
  _ov_co_id: "$ov_co_id",
  _efcv_bgdt: "$efcv_bgdt"
}

您要查找的是Object.assign。如前所述,对象是一个无序的键值对列表,因此不能保证它们的打印顺序。如果要保持插入顺序,请查看贴图。他们可能会有所帮助


可能的副本。您也可以使用spread操作符来执行此操作。obj2={…obj,a:b}当您控制台旧对象时,您得到的顺序与旧对象相同,但当您单击它展开并查看所有值时,Google chrome会按升序排列它。