将对象数组中的正数更改为负数

问题描述

鉴于数据库中的 array 个:

object

我想要的键和值为负的输出(例如)

detail : [ 
       0: {
            Code: "Code 1",Price: "1.00",IncTaxPrice: "1.20",Tax:"0.20",},1: {
            Code: "Code 2",Price: "9.00",IncTaxPrice: "9.20",}
]

我尝试使用 [ { Code: "Code 1",Price: "-1.00",IncTaxPrice: "-1.20",Tax: "-0.20",{ Code: "Code 2",Price: "-9.00",IncTaxPrice: "-9.20",]; ,过滤器 map 但它给出了一个错误,我想我遗漏了一些东西。 正确过滤后,我将使用 function,将 -Math.abs() 转换为 positive

negative

let final = detail.map(a => Object.values(a).filter(v => typeof v === 'number')) ,price 这样的元素类似于 taxelements 的 8 个不同的 numbers

解决方法

感谢@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:...}] 它们在里面包含一个对象,所以它们是对象,你可以't map 如果您的对象数组未正确定义为: [{0:{code:..}},{1:{code:..}}.

也不能使用 typeof 过滤器,因为所有值都是字符串类型。

我会这样:

let detail = [ {
       0: {
            Code: "Code 1",Tax:"0.20",}},{1: {
            Code: "Code 2",}}
]
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
         }
          )