我正在尝试收集CustodyKeys__notes
对象中的所有错误,并将其填充到err
中以显示它们。
this.errors
对象:
err
如您所见,err是一个对象,其中各个键的值是字符串数组。要将错误字符串收集到单独的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"]
}
数组中,我只需执行:
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);
});
}
OR
populateErrors(err) {
err.forEach(error => {
this.errors.push(error);
});
}
// and call it
this.populateErrors(err);
并将其显示在我的模板中:
populateErrors(err, keys[]) {
err.forEach(error => {
this.errors.push(err.keys[1]);
});
//...
}
// and call it
populateErrors(err, ['name', 'rate', 'category'])
该功能可能是什么样的?
答案 0 :(得分:2)
您可以使用map
reduce
。
const 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"]
}
const arr = Object.keys(err)
.map(k => err[k])
.reduce((acumm, el) => acumm.concat(el), []);
console.log(arr)

我们正在组合Object.keys
一个本机函数,该函数允许您使用map
和reduce
获取对象的键。
["name", "rate", "category"].map(...
map
方法创建一个新数组,其结果是为每个数组元素调用一个函数。所以,我正在返回属性本身的价值。
[[ "Item name...", "Item name..." ], ["Item Rate...", "Item rate"], ["Item Category..."]].reduce(...
reduce
方法将数组减少为单个值。所以我在一个数组中连接所有值。
答案 1 :(得分:0)
您可以使用map函数和属性上的循环:
for (let prop in this.err) {
this.errors = this.errors.join(
this.err[prop].map(el => ({el}));
);
}