繁体   English   中英

将object数组中的正数改为负数

[英]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'))

pricetax等元素是numbersamounts的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM