[英]Change the positive number to negative number in array of object
给定数据库中的object
array
:
detail : [
0: {
Code: "Code 1",
Price: "1.00",
IncTaxPrice: "1.20",
Tax:"0.20",
},
1: {
Code: "Code 2",
Price: "9.00",
IncTaxPrice: "9.20",
Tax:"0.20",
}
]
Output 我想要键和值为负(例如)
[
{
Code: "Code 1",
Price: "-1.00",
IncTaxPrice: "-1.20",
Tax: "-0.20",
},
{
Code: "Code 2",
Price: "-9.00",
IncTaxPrice: "-9.20",
Tax: "-0.20",
},
];
我尝试使用map
过滤器function
但它给出了一个错误,我想我错过了一些东西。 正确过滤后,我将使用-Math.abs()
将positive
转换为negative
。
let final = detail.map(a => Object.values(a).filter(v => typeof v === 'number'))
price
, tax
等元素是numbers
和amounts
的8个不同elements
。
感谢评论中的@VLAZ 建议。 我认为您可以使用 Object.keys() 按密钥进行过滤。
下面的例子:
const detail = [ { Code: "Code 1", Price: "1.00", IncTaxPrice: "1.20", Tax: "0.20", }, { Code: "Code 2", Price: "9.00", IncTaxPrice: "9.20", Tax: "-0.20", }, ]; let final = detail.map(x => ({ Code: x.Code, Price: -Number(x.Price), IncTaxPrice: -Number(x.IncTaxPrice), Tax: -Number(x.Tax), })); console.log(final);
您应该将 0、1 索引用大括号括起来,因为它是一个对象数组。 您不能像以前那样定义它,因为索引 0 和 1 不仅仅是数字(fex. [0,1,2]
是有效的,但不是[0:{code:...},1:{code:...}]
它们在内部包含一个 object,因此它们是对象,如果您的对象数组未正确定义为:[{0:{code:..}},{1:{code: ..}}。
也使用 typeof 过滤器不会工作,因为所有值都是字符串类型。
我会像这样 go :
let detail = [ {
0: {
Code: "Code 1",
Price: "1.00",
IncTaxPrice: "1.20",
Tax:"0.20",
}},
{1: {
Code: "Code 2",
Price: "9.00",
IncTaxPrice: "9.20",
Tax:"0.20",
}}
]
detail.map(el=>{
el[Object.keys(el)[0]]['Price']=(-parseFloat(el[Object.keys(el)[0]]['Price'])).toString()
el[Object.keys(el)[0]]['IncTaxPrice']=(-parseFloat(el[Object.keys(el)[0]]['IncTaxPrice'])).toString()
el[Object.keys(el)[0]]['Tax']=(-parseFloat(el[Object.keys(el)[0]]['Tax'])).toString()
return
}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.