我有这个JSON数据对象:
var dataObjects = [
{
"Name": "Date & Time",
"Type": "Date",
"Value": "2019-12-11"
},
{
"Name": "Activity",
"Type": "String",
"Value": "ADD"
}
]
我想从这个对象中构建一个新的JSON数据数组对象,除了新对象的日期格式为“ 2019-12-11”到“ 2019年12月11日”。
在谷歌搜索后,这是我的尝试,但是我遇到很多语法错误。
请原谅我缺乏对Typescript和Javascript的了解,这就是为什么我寻求帮助,因为一些简单的事情仍然给我带来很多困难。
public FunctionA(dataObjects: any[]): object
{
let returnObj: any = {}
let returnObjArray: any = [];
for(let obj in dataObjects){
var dateValue = obj.Date;
if(obj.Type == "Date"){
dateValue = obj.Date.Format()
}
returnObj = {"Name", obj.Name, "Type": obj.Type, "Value": dateValue };
returnObjArray.push(returnObj);
}
return returnObjArray;
}
我有点理解我的错误是,在使用其属性之前,我必须以某种方式指定此“ any”数组是什么。但是,我尝试在下面声明它,但仍然有错误:
dataObjects: Array[{ Name: string, Type: string, Value: string }]
答案 0 :(得分:1)
语法是这样的:
Array<{ Name: string, Type: string, Value: string }>
或者这个:
{ Name: string, Type: string, Value: string }[]
但更好的是给它起一个名字:
type MyObject = {
Name: string,
Type: string,
Value: string
}
然后在各处使用MyObject[]
。
答案 1 :(得分:1)
这是实现目标的方法:
minishift stop && minishift start
var dataObjects = [
{
"Name": "Date & Time",
"Type": "Date",
"Value": "2019-12-11"
},
{
"Name": "Activity",
"Type": "String",
"Value": "ADD"
}
]
type dataType = {Name: string, Type: string, Value: string};
function A(dataObjects: dataType[]): dataType[]
{
let returnObjArray: dataType[] = [];
dataObjects.forEach((obj:dataType) => {
if(obj.Type === "Date"){
obj.Value = moment(obj.Value).toString("MMM dd, yyyy");
}
returnObjArray.push(obj);
});
return returnObjArray;
}
是您可以将旧日期字符串转换为所需格式(使用moment包)的地方。
答案 2 :(得分:1)
我认为最好的方法是创建自己的DataObject
接口并使用map函数创建新数组。
interface DataObject {
name: string;
type: string;
value: string;
}
var dataObjects: DataObject[] = [
{
"name": "Date & Time",
"type": "Date",
"value": "2019-12-11"
},
{
"name": "Activity",
"type": "String",
"value": "ADD"
}
]
function convertDate(date: string): string {
// Your conversion code here.
return date;
}
function convertDataObjects(dataObjects: DataObject[]): DataObject[] {
return dataObjects.map(obj => {
return {name: obj.name, type: obj.type, value: convertDate(obj.value)};
});
}
console.log(convertDataObjects(dataObjects));