[英]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.