繁体   English   中英

将js对象数组转换为关联数组

[英]Convert js object array into associative array

通过使用 array.push() 我正在更新以下数组。 我想向对象数组中的每个对象添加索引/键,因为我想在推送新项目之前检查是否存在具有相同索引/键的记录。

我的阵列就像

$data = [
  {
    "id": 37,
    "permit_id": 1,
    "document_description": "zzxc",
    "file_name": "zxc"
  },
  {
    "permit_id": "1",
    "document_description": "aa",
    "file_name": "az"
  },
  {
    "permit_id": "1",
    "document_description": "aax",
    "file_name": "azx"
  }
]

我想把它转换成这样

[
    0 => {
    "id": 37,
    "permit_id": 1,
    "document_description": "zzxc",
    "file_name": "zxc"
  },
    1 => {
    "permit_id": "1",
    "document_description": "aa",
    "file_name": "az"
  },
    2 => {
    "permit_id": "1",
    "document_description": "aax",
    "file_name": "azx"
  }
]

有没有办法做到这一点? 请给我一个想法。 谢谢!

JS 中没有关联数组这样的东西。 您需要将其转换为对象。

您可以使用spread operator将数组转换为对象: let myObj = {...$data}

 let $data=[{id:37,permit_id:1,document_description:"zzxc",file_name:"zxc"},{permit_id:"1",document_description:"aa",file_name:"az"},{permit_id:"1",document_description:"aax",file_name:"azx"}]; let myObj = {...$data} console.log(myObj);

更新

如果要搜索数组以检查具有属性的对象是否已存在,可以使用Array.some()

 let $data=[{id:37,permit_id:1,document_description:"zzxc",file_name:"zxc"},{permit_id:"1",document_description:"aa",file_name:"az"},{permit_id:"1",document_description:"aax",file_name:"azx"}]; let existingObj = {id:37,permit_id:1,document_description:"zzxc",file_name:"zxc"} let nonexistingObj = {id:38,permit_id:1,document_description:"foo",file_name:"bar"} if(!$data.some(item => item.id === existingObj.id)){ $data.push(existingObj) console.log(`ID: ${existingObj.id} pushed`); }else{ console.log(`ID: ${existingObj.id} already exists!`); } if(!$data.some(item => item.id === nonexistingObj.id)){ $data.push(nonexistingObj) console.log(`ID: ${nonexistingObj.id} pushed`); }else{ console.log(`ID: ${nonexistingObj.id} already exists!`); } console.log($data);

这基本上就是你已经拥有的。 对象数组实际上是一个关联数组,其中键是整数 - 都扩展了Object

您可以使用forEach循环。 数组不能像对象那样具有键值对,因此必须创建一个额外的对象,以便使用编号键对值进行键控

 var x=[ { "id": 37, "permit_id": 1, "document_description": "zzxc", "file_name": "zxc" }, { "permit_id": "1", "document_description": "aa", "file_name": "az" }, { "permit_id": "1", "document_description": "aax", "file_name": "azx" } ] var obj={}; x.forEach((e,j)=>{ obj[j+'=>']=e; }) x=[obj] console.log(x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM