如果无法从中找到属性,是否有方法抛出错误data。
问题是,它是映射undefined而不是抛出错误。
const insertIntoTable = function(data) {
return new Promise((resolve, reject) => {
const entry = {
Id: data.id,
Method: data.Method,
Status: data.PaymentStatus,
InsertedAt: (new Date().getTime())
}
}).catch((error) => {
console.log(error);
});
}
Run Code Online (Sandbox Code Playgroud) 如果所有字段都有效,如何返回resolve()否则返回拒绝?
let validateData = (data) => {
let fields = [
'Field1',
'Field2',
'Field3'
];
return new Promise((resolve, reject) => {
fields.forEach(field => {
if (data.hasOwnProperty(field)) {
// resolve if all matched
} else {
//reject?
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
在主要它将有
try {
await validateData(data);
} catch(err) {
throw new Error(`${err}`);
}
Run Code Online (Sandbox Code Playgroud) 有没有办法改进此代码将对象转换为映射数组?
我想出了这个解决方案,有更好的方法和清洁吗?
let productItems = {
'Item1': {
quantity: 4,
name: 4,
price: 123
},
'Item2': {
quantity: 1,
name: 3,
price: 144
},
'Item3': {
quantity: 2,
name: 2,
price: 343
}
}
let items = [];
for (const item in productItems) {
const formatItem = {
"Qty": productItems[item].quantity,
"Cost": productItems[item].price
}
items.push(formatItem);
}
Run Code Online (Sandbox Code Playgroud)
输出:
[ { Qty: 4, Cost: 123 },
{ Qty: 1, Cost: 144 },
{ Qty: 2, Cost: 343 } ]
Run Code Online (Sandbox Code Playgroud) 使用JavaScript,将点替换为逗号(欧盟货币)的正确方法是什么,例如:
2000.65将是2000,65而不是2,000.65
39.20 将会 39,20
我不确定是否cost.replace('.', ',')是正确的方法.有更好的选择吗?
如果找到状态,我正在映射.功能似乎工作正常,但有更短的方式或替代方式?
例如:
data = {
Items: [
{Id: 434, Status: "Processing"},
{Id: 223, Status: "Completed"}
]
}
mapperData = {
Id: 223,
Name: "Hello World",
Status: data.Items.filter(function(item) {
if (item.Id == 223) {
return item.Status
}
})[0].Status,
}
console.log(mapperData)
Run Code Online (Sandbox Code Playgroud)
回:
{Id:223,姓名:"Hello World",状态:"已完成"}