我有一系列看起来像这样的对象;

[
{Number: 5002000, Origin: 123456, Count: 128},
{Number: 5002300, Origin: 900231, Count: 52},
{Number: 5002022, Origin: 534323, Count: 269}
]


现在,我试图将“ Count”值与指定价格池中的值相乘。

看起来像这样;

[
{Prefix: 50023, Price: 20},
{Prefix: 50020, Price: 10},
{Prefix: 5002, Price: 60},
]


当前,if语句令人讨厌。

for (var key in sData) {
  if (sData[key].Origin.startsWith('50023')) {
    sData[key].sum = (sData[key].Count * 20);
  }
  else if (sData[key].Origin.startsWith('50020')) {
    sData[key].sum = (sData[key].Count * 10);
  }
  // continues...
}


startsWith是仅检查值是否以(value)开头的函数。

JS中已经有一个函数可以映射两个对象数组? (由于“ Prefix”值基本上必须自上而下,以免落在默认的“ 5002”前缀上,因此我在逻辑上也有疑问。)

最佳答案

在这种情况下,您应该使用嵌套循环。同时切换到Array.forEach方法。

sData.forEach(function(item_, key) {

          prices.forEach(function(item) {

             if (sData[key].Origin.startsWith(item.Prefix)) {
                sData[key].sum = (sData[key].Count * item.Price);
             }

          });

 })

07-24 09:50