Javascript 如何从单个键的值是单独字符串数组的对象创建字符串数组?
我试图收集Javascript 如何从单个键的值是单独字符串数组的对象创建字符串数组?,javascript,angular,typescript,Javascript,Angular,Typescript,我试图收集err对象中的所有错误,并将它们填充到this.errors中以显示它们 错误对象: err = { "name": [ "Item name is required.", "Item name must be at least 4 chars" ], "rate": [ "Item Rate is should be a number.", "Item rate should be between 10 and 1000" ], "
err
对象中的所有错误,并将它们填充到this.errors
中以显示它们
错误
对象:
err = {
"name": [
"Item name is required.",
"Item name must be at least 4 chars"
],
"rate": [
"Item Rate is should be a number.",
"Item rate should be between 10 and 1000"
],
"category": ["Item Category is required"]
}
如您所见,err是一个对象,其中各个键的值是字符串数组。要将错误字符串收集到单独的this.errors
数组中,我只需执行以下操作:
if (err && err.number) {
err.number.forEach(e => {
this.errors.push(e);
});
}
if (err && err.number) {
err.rate.forEach(e => {
this.errors.push(e);
});
}
if (err && err.number) {
err.category.forEach(e => {
this.errors.push(e);
});
}
但我需要在我的应用程序的许多地方重复这些代码行
我想将这些代码放在functionl中,如下所示:
populateErrors(err) {
err.forEach(error => {
this.errors.push(error);
});
}
// and call it
this.populateErrors(err);
或
并在我的模板中显示它们:
<div class="row" *ngIf="errors && errors.length">
<div class="col-md-12">
<div class="alert alert-danger alert-dismissible">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<ol *ngFor="let err of errMsg">
<li>{{ err }}</li>
</ol>
</div>
</div>
</div>
{{err}}
该函数可能是什么样的?您可以使用映射函数,并在属性上进行循环:
for (let prop in this.err) {
this.errors = this.errors.join(
this.err[prop].map(el => ({el}));
);
}
可以使用映射函数,并在属性上使用循环:
for (let prop in this.err) {
this.errors = this.errors.join(
this.err[prop].map(el => ({el}));
);
}
您可以使用
映射
减少
const err={
“姓名”:[
“项目名称为必填项。”,
“项目名称必须至少为4个字符”
],
“费率”:[
“项目费率应为数字。”,
“项目费率应介于10和1000之间”
],
“类别”:[“需要项目类别”]
}
const arr=Object.keys(错误)
.map(k=>err[k])
.reduce((acumm,el)=>acumm.concat(el),[]);
console.log(arr)
您可以使用映射
减少
const err={
“姓名”:[
“项目名称为必填项。”,
“项目名称必须至少为4个字符”
],
“费率”:[
“项目费率应为数字。”,
“项目费率应介于10和1000之间”
],
“类别”:[“需要项目类别”]
}
const arr=Object.keys(错误)
.map(k=>err[k])
.reduce((acumm,el)=>acumm.concat(el),[]);
console.log(arr)
这是一个单行解决方案,工作起来很有魅力。如果你有时间的话,你能简单地解释一下吗?非常感谢,伙计。@如果我的解释不太清楚,我很抱歉。问你想要什么。这是一个单行的解决方案,效果很好。如果你有时间的话,你能简单地解释一下吗?非常感谢,伙计。@如果我的解释不太清楚,我很抱歉。问你想要什么。