【发布时间】:2020-05-22 10:12:54
【问题描述】:
我从后端收到一个嵌套对象数组,我通过它们来修改值并根据我的应用程序所需的条件进行过滤
const data = this.market;
data.forEach(function(item: any, i) {
if (item.functional_id === 'cool') {
data.splice(i, 1);
data.unshift(item);
}
if (item.functional_id === 'max') {
item.name = 'Max min';
}
item.products.forEach(function(product) {
product.items.forEach(function(article) {
console.log(article);
});
});
});
}
在 console.log 点我收到几个具有以下结构的对象
{
"name": "Standard",
"description": "for 50",
"price": 20,
"functional_id": "sacs_housse"
}
我得到的一些商品的价格带有小数点,用点分隔,我想检查它是否有那个点以用逗号替换它。 所以我试图对替换积分设定条件。但是我看不到访问该属性的方法,因为我尝试过的所有循环类型都返回错误。 我尝试过的一些事情如下。
const data = this.market;
data.forEach(function(item: any, i) {
if (item.functional_id === 'cool') {
data.splice(i, 1);
data.unshift(item);
}
if (item.functional_id === 'furniture') {
item.name = 'Max min';
}
item.products.forEach(function(product) {
product.items.forEach(function(article) {
const price = item.price;
if (price.contains('.')) {
price.replace(/./g, ',');
}
});
});
});
看到我所犯错误并可以帮助我的人。 提前谢谢你。
【问题讨论】:
-
price是一个数字。而且数字没有.contains()也没有.replace()方法。 -
.replace(/./g, ',')不会像您认为的那样做。查看正则表达式教程以及哪些字符具有特殊含义。 -
另外,
const price = item.price;创建一个副本;更改price对item.price没有影响。此外,您需要使用.replace()的返回值,因为它不会改变原始字符串。 -
非常感谢! @Andreas 我不明白为什么控制台打印的数据不能被修改。
-
使用它来设置输出格式:angular.io/api/common/DecimalPipe
标签: javascript loops object nested angular7