Javascript-为什么forEach方法添加了重复项?
正在尝试基于现有数组键值对和旧数组键值对创建新数组对象。但它返回22个项目,而我的旧数组是20个。有线索吗 我知道旧的有副本,我想保留它Javascript-为什么forEach方法添加了重复项?,javascript,arrays,Javascript,Arrays,正在尝试基于现有数组键值对和旧数组键值对创建新数组对象。但它返回22个项目,而我的旧数组是20个。有线索吗 我知道旧的有副本,我想保留它 var old=[ "35189432", "35189424", "62617691", "62617802", "33637179", "33637152", “GRP00437”, "38051474", "34775346", "63055352", “GRP07780”, “GRP00436”, "63055352", "68798876", "6
var old=[
"35189432",
"35189424",
"62617691",
"62617802",
"33637179",
"33637152",
“GRP00437”,
"38051474",
"34775346",
"63055352",
“GRP07780”,
“GRP00436”,
"63055352",
"68798876",
"68798841",
"66886255",
"66911969",
"67215974",
"66886239",
"67996399"
];
var next=[
{
“价格”:107800,
“isNew”:错误,
“sku”:“35189432”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:107800,
“isNew”:错误,
“sku”:“35189424”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:161700,
“isNew”:错误,
“sku”:“62617691”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:161700,
“isNew”:错误,
“sku”:“62617802”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:148500,
“isNew”:错误,
“sku”:“33637179”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:148500,
“isNew”:错误,
“sku”:“33637152”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:11万美元,
“isNew”:错误,
“sku”:“38051474”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:148500,
“isNew”:错误,
“sku”:“34775346”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:94600,
“isNew”:错误,
“sku”:“63055352”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:94600,
“isNew”:错误,
“sku”:“63055352”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:41800,
“isNew”:错误,
“sku”:“68798876”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:41800,
“isNew”:错误,
“sku”:“68798841”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:797500,
“isNew”:错误,
“sku”:“66886255”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:1320000,
“isNew”:错误,
“sku”:“66911969”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:41800,
“isNew”:错误,
“sku”:“67215974”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:797500,
“isNew”:错误,
“sku”:“66886239”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:44000美元,
“isNew”:错误,
“sku”:“67996399”,
“isGroup”:false,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误
},
{
“价格”:84700,
“isNew”:错误,
“sku”:“GRP00437”,
“selectedSku”:“10769213”,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误,
“isGroup”:没错,
},
{
“价格”:117700,
“isNew”:错误,
“sku”:“GRP07780”,
“选定SKU”:“33283601”,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误,
“isGroup”:没错,
},
{
“价格”:135300,
“isNew”:错误,
“sku”:“GRP00436”,
“选定SKU”:“12595816”,
“isPurchasable”:正确,
“isLowInventory”:false,
“isIRExperience”:错误,
“isGroup”:没错,
}
];
log('old-->',old);
log('next-->',next);
获取重新排序的产品(旧的,下一个);
函数GetReorOrderedProducts(OrderedKey,数据){
常数乘积=[];
forEach(orderKey=>{
data.forEach(项=>{
if(orderKey.toString()==item.sku.toString()){
产品。推送(项目);
}
});
});
console.log(“最终产品-->”,产品);
}
下一个变量出现问题。
检查内容,第9项和第10项的sku相同。
这两个项目的sku都是63055352
,因此出现了问题
因此sku
在next
变量上不是唯一的,因此添加了重复项。
product
变量包含重复的63055352
值,并且next
变量包含重复的63055352
sku产品,因此您可以看到差异。您使用的是嵌套的循环,这意味着内部循环(在数据
上)在外部循环的每个迭代中,通过数据的元素一直运行。因此,如果在外部循环的迭代过程中,数据
中有多个项目匹配,您将向产品
添加多个条目
对于sku
值“63055352”
,这种情况会发生,它在old
中出现两次,在next
中也出现两次。因此,这些项目最终会添加到产品中两次,两次。:-)在这里调用它,并在发生时显示一些日志:
var old=[
"35189432",
"35189424",
"62617
getReorderedProducts(old, next);
function getReorderedProducts(orderedKeys, data) {
const products = new Set();
orderedKeys.forEach(orderKey => {
data.forEach(item => {
if (orderKey.toString() === item.sku.toString()) {
products.add(item);
}
});
});
console.log(...products);
}