angular - 如何将我的 Json 数组转换为角度 5 中的对象
问题描述
我有一个 Json 数组,例如:
[{"name":"ip","children":{"label":"ip","value":"","type":"text","validation":"{ required: true}"}}
,{"name":"test","children":{"label":"test","value":"","type":"text","validation":"{ required: true}"}}
,{"name":"join","children":{"label":"join","value":"","type":"text","validation":"{ required: true}"}}
,{"name":"myform","children":{"label":"myform","value":"","type":"text","validation":"{ required: true}"}}]
我应该像这样将一个对象传递给组件
export const person = {
ip: {
label: 'ip',
value: '',
type: 'text',
validation: { required: true }
},
test: {
label: 'test',
value: '',
type: 'text',
validation: { required: true }
},
join: {
label: 'join',
value: '',
type: 'text',
validation: { required: true }
},
myform: {
label: 'myform',
value: '',
type: 'text',
validation: { required: true }
}
}
我怎样才能做到这一点?
解决方案
您可以为此使用该.reduce
功能。
它将遍历数组并允许您将其转换为单个值(在本例中为对象)。
(请记住,在您的原始数组中,validation
是一个字符串,而不是一个对象)
let arr = [{"name":"ip","children":{"label":"ip","value":"","type":"text","validation":"{ required: true}"}}
,{"name":"test","children":{"label":"test","value":"","type":"text","validation":"{ required: true}"}}
,{"name":"join","children":{"label":"join","value":"","type":"text","validation":"{ required: true}"}}
,{"name":"myform","children":{"label":"myform","value":"","type":"text","validation":"{ required: true}"}}]
// Transform the array
let result = arr.reduce((res, item) => {
// Add the value into the result object
res[item.name] = item.children;
return res;
}, {});
console.log(result);
推荐阅读
- node.js - 在结帐时条纹默认卡
- c++ - GlobalAlloc 代替其他分配方式
- r - 从 R 数据帧中采样
- javascript - 使用 Dropify 删除上传的图片
- javascript - Reduce() 到状态对象 Typescript
- reactjs - 如何将媒体会话 api 与 React 集成?
- paypal - PayPal 结帐按钮 - 客户端/服务器通信
- python - “pip install”在我的 MacOS 上为所有版本的 python 安装了包
- javascript - 同一句子中具有两种不同字体大小的画布文本
- mongodb - 如何在一个本地系统中配置两台 MongoDB 服务器?