将动态值插入对象数组,javascript
Inserting dynamic value into array of objects, javascript
我有一组看起来像这样的对象;
[
{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 循环。
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);
}
});
})
假设第二个数组可以转化为散列:
var tiers = {
50023: {Prefix: 50023, Price: 20},
50020: {Prefix: 50020, Price: 10},
5002: {Prefix: 5002, Price: 60},
}
你可以让它看起来像这样:
for (var key in sData) {
var key = String(sData[key])
var keyIndex = key.slice(5)
if (tiers.hasOwnProperty(keyIndex)) {
var price = tiers[keyIndex].Price
sData[key].sum = (sData[key].Count * price)
} else {
// Fallback solution
}
}
更进一步,您甚至可能会想到一些回退的递归解决方案。
我有一组看起来像这样的对象;
[
{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 循环。
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);
}
});
})
假设第二个数组可以转化为散列:
var tiers = {
50023: {Prefix: 50023, Price: 20},
50020: {Prefix: 50020, Price: 10},
5002: {Prefix: 5002, Price: 60},
}
你可以让它看起来像这样:
for (var key in sData) {
var key = String(sData[key])
var keyIndex = key.slice(5)
if (tiers.hasOwnProperty(keyIndex)) {
var price = tiers[keyIndex].Price
sData[key].sum = (sData[key].Count * price)
} else {
// Fallback solution
}
}
更进一步,您甚至可能会想到一些回退的递归解决方案。