【问题标题】:match object in javascript and assign value在javascript中匹配对象并赋值
【发布时间】:2022-12-20 09:47:33
【问题描述】:

如您所见,如果您检查数据源,它有一个键 isEdit 并且它有一个布尔值。 我们将 dataSouce 值与 tempValues 进行比较,因为您可以看到数据源中的列值与 tempValues 上的键。比较之后,我们检查数据源中的值 isEdit 是 true 还是 fals

如果 isEdit 的值为真,则从 tempValues.dealIdleDetailsForFinanceDto 获取值,例如 NVB isEdit 值为真,因此 nvb 值来自 tempValues.dealIdleDetailsForFinanceDto 为 99 否则为 20

检查最终输出的值。

请查看最终输出以进行比较。谢谢。

#数据1

dataSouce = [
    {
        "name": "NVB",
        "value": 0,
        "financeValue": 0,
        "column": "nvb",
        "isEdit": true
    },
    {
        "name": "ROU",
        "value": 0,
        "financeValue": 0,
        "column": "rou",
        "isEdit": false
    },
    {
        "name": "Net Present Value",
        "value": 0,
        "financeValue": 0,
        "column": "netPresentValue",
        "isEdit": false
    },
]

#tempValues

tempValues = {
    "transactionId": 20,
    "nvb": 20,
    "rou": 100,
    "netPresentValue": 50,
     "dealIdleDetailsForFinanceDto": {
        "nvb": 99,
        "rou": 4,
        "netPresentValue": 88,
    }
}

#Sample 最终输出

[
  {
    "name": "NVB",
    "value": 99,
    "financeValue": 20,
    "column": "nvb",
    "isEdit": true
  },
  {
    "name": "ROU",
    "value": 100,
    "financeValue": 100,
    "column": "rou",
    "isEdit": false
  },
  {
    "name": "Net Present Value",
    "value": 88,
    "financeValue": 50,
    "column": "netPresentValue",
    "isEdit": true
  }
]

#示例代码

        const finalOutput = dataSource.map(item => {
  // Look up the value in tempValues using the column property of the object

  if(item.isEdit) {
    
  }

  const financeValue = tempValues[item.column];
  
  // Return a new object with the updated value property
  return {
    ...item,
    financeValue, 
  };
});

【问题讨论】:

  • 在这个例子中,dataSouce[2].isEdit应该是true吗?
  • 不,有些值是真的,有些值是假的
  • 在这种情况下,最终输出如何为该对象提供isEdit: true,以及为什么它从tempValues.dealIdleDetailsForFinanceDto中的属性获取值?
  • 先生,请基于最终输出,您就会明白
  • 抱歉,数据和描述之间似乎存在不一致。很乐意提供帮助,但如果描述与数据不符,那将非常困难。

标签: javascript typescript


【解决方案1】:

假设 dataSouce[2].isEdit = true,并且这是问题中的错字,那么以下代码 sn-p 应该会有所帮助。

dataSource = [
    {
        "name": "NVB",
        "value": 0,
        "financeValue": 0,
        "column": "nvb",
        "isEdit": true
    },
    {
        "name": "ROU",
        "value": 0,
        "financeValue": 0,
        "column": "rou",
        "isEdit": false
    },
    {
        "name": "Net Present Value",
        "value": 0,
        "financeValue": 0,
        "column": "netPresentValue",
        "isEdit": true
    },
];

tempValues = {
    "transactionId": 20,
    "nvb": 20,
    "rou": 100,
    "netPresentValue": 50,
     "dealIdleDetailsForFinanceDto": {
        "nvb": 99,
        "rou": 4,
        "netPresentValue": 88,
    }
};

const finalOutput = dataSource.map(item => {
  const tempValue = tempValues[item.column];
  const dealIdleDetailsValue = tempValues.dealIdleDetailsForFinanceDto[item.column];
  return {
    ...item,
    financeValue: tempValue,
    value: item.isEdit ? dealIdleDetailsValue : tempValue
  }
});

console.log(finalOutput);

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 2014-07-11
    • 2012-02-16
    • 2013-05-12
    • 1970-01-01
    • 2014-07-10
    • 2018-07-13
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多