将JSON对象数组转换为关联数组
Convert JSON Object array into associative array
假设我有2个JSON对象数组,如下所示:
资源:
[{
"DefinitionId": 193041,
"ResourceId": -2147290607,
"AssetId": 193041
}, {
"DefinitionId": 193042,
"ResourceId": -2147290603,
"AssetId": 193042
}]
资源ID
[193041, 193041, 193041, 193042]
用例:
我需要列出每个ResourceId的ResourcesJSONObject的详细信息。例如,我想为ResourceIds
中的每个ResourceId
输出AssetId
。
我的计划:
我认为将Resources
JSON转换为关联数组是一个很好的解决方案,这样我就可以访问ResourceId
'193041'的AssetId
,如下所示:Resources[193041].AssetId
。问题是:我只能考虑用长代码将上面的Resources
JSON转换为关联的JSON对象。
问题:
如何将上面的ResourcesJSON对象数组转换为以ResourceId为键的关联对象数组?
Desired Resources.json:
{
"-2147290607": {
"DefinitionId": 193041,
"ResourceId": -2147290607,
"AssetId": 193041
},
"-2147290603": {
"DefinitionId": 193042,
"ResourceId": -2147290603,
"AssetId": 193042
}
}
您可以使用对象并使用Array#forEach
迭代数组
forEach()
方法对每个数组元素执行一次所提供的函数。
并将该元素分配给名称为CCD_ 11的属性。
回调使用了Arrow函数,因为只有一个赋值。
var data = [{ "DefinitionId": 193041, "ResourceId": -2147290607, "AssetId": 193041 }, { "DefinitionId": 193042, "ResourceId": -2147290603, "AssetId": 193042 }],
object = {};
data.forEach(a => object[a.ResourceId] = a);
console.log(object);
您可以使用reduce
:
var resources = [{
"DefinitionId": 193041,
"ResourceId": -2147290607,
"AssetId": 193041
}, {
"DefinitionId": 193042,
"ResourceId": -2147290603,
"AssetId": 193042
}];
var resourceIds =[193041, 193041, 193041, 193042];
var res = resources.reduce( function(prev, curr) {
// Check AssetId
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
if ( resourceIds.indexOf( curr.AssetId ) >= 0 ) prev[ curr.ResourceId ] = curr;
return prev;
}, {} );
var resJSON = JSON.stringify( res );
var Resources = [{
"DefinitionId": 193041,
"ResourceId": -2147290607,
"AssetId": 193041
}, {
"DefinitionId": 193042,
"ResourceId": -2147290603,
"AssetId": 193042
}];
Resources.find(function(value){return value.ResourceId === -2147290603}).AssetId
或者使用lodash/下划线来获得优雅的解决方案:_.fund(Resources,{ResourceId:-2147290603}).AssetId;
这样,我们只需传递ResourceId就可以找到所需的AssetId。为了简单起见,我们甚至可以跳过JSON的转换。
相关文章:
- 多维关联数组的最后一个索引
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 具有关联数组数据集的D3.js表
- 后关联数组使用jquery ajax
- 返回一个关联数组,而不是mongoose中的文档数组
- 如何在 Angular JS 中从关联数组创建多个复选框
- 存储在变量中的关联数组中的访问键
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- 在主要的JavaScript引擎中,在JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少
- 关联数组,并使用父数组d作为selection.data()的源数组
- 获取关联数组的标签
- JavaScript:如何在最接近值的关联数组中查找键
- 单击时显示关联数组的元素
- 关联数组 - 使用图像滑块显示键值
- Javascript从关联数组中查找最低数字(气泡排序方法)
- AngularJS过滤器不适用于我的数据:关联数组
- 获取关联数组中当前函数的键
- 如何按一个仍保持字母顺序的特性值(另一个特性值)对关联数组进行排序
- 正在检查JavaScript中是否存在关联数组
- 二维对象/将数组关联到三维对象Javascript中