Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-为什么forEach方法添加了重复项?_Javascript_Arrays - Fatal编程技术网

Javascript-为什么forEach方法添加了重复项?

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

正在尝试基于现有数组键值对和旧数组键值对创建新数组对象。但它返回22个项目,而我的旧数组是20个。有线索吗

我知道旧的有副本,我想保留它

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);
}