如何在javascript数组中存储所有包括重复(非唯一)对象?

Posted

技术标签:

【中文标题】如何在javascript数组中存储所有包括重复(非唯一)对象?【英文标题】:How to store all including repeating(non-unique) object in javascript array? 【发布时间】:2021-01-20 00:10:16 【问题描述】:

我想存储和显示所有(包括重复的)对象,但它只存储不同的(唯一)值。

好事总计正在添加所有值包括重复出现 坏事indistinctresult 无法存储重复出现的对象for循环也不起作用

if (req.isAuthenticated()) 
    User.find( _id: req.user._id , function (err, cartitem) 
      var noofcartitem = cartitem[0].cart_array.length;

      product.find( _id: cartitem[0].cart_array , function (err, result) 
        var total = 0;
        var x;
        var indistinctresult = [];  ***//stores only distinct(Unique) values*** 
        for (x in result) 
          total += result[x].price;
          indistinctresult.push(result[x]);
        
        console.log(indistinctresult); **//expected to log all(including non unique) values**
        res.render("cart", 
          cart_array: noofcartitem,
          total: total,
          cartproduct: indistinctresult,
        );
      );
    );
   else 
    res.redirect("/login");
  

【问题讨论】:

这能回答你的问题吗? Get all unique values in a javascript array (remove duplicates) 这条线是做什么的:for (x in result) ... x 在代码中的任何位置都没有赋值。 x 循环到结果中的项目数。 第一步,将for (x in result) 替换为for (let x=0; x<result.length; x++) 然后告诉我们会发生什么 相同的结果先生,问题是 indistinctresult 只存储唯一值。 【参考方案1】:

我看到您正在使用 for..in 循环来遍历数组。这不是一个好主意。

以下链接可能对您有所帮助。

Why is using "for...in" for array iteration a bad idea?

【讨论】:

您能否建议我完成工作的方法,因为我尝试了循环,问题是我无法在循环外访问变量。 结果过长。 我认为您的查询结果本身只包含唯一值。那么你如何期待模糊的价值呢?您如何定义您的独特物品? 不,总变量正在添加重复出现的值,并且在循环内记录结果时也会打印重复出现的对象。【参考方案2】:
const x = [1, 2, 3, 1]
const y = []
for (let i=0; i<x.length; i++) 
    y.push(x[i]);  

console.log(y);

输出:[1、2、3、1] 将 for..in 循环替换为 for 循环和索引。

【讨论】:

以上是关于如何在javascript数组中存储所有包括重复(非唯一)对象?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将javascript数组存储在json中? [复制]

如何使用JavaScript将循环内数组中的所有项目相乘[重复]

如何使用Javascript从特定的单个数组中查找所有不重复的组合

JavaScript 数组去重

Javascript - 计算对象数组中的重复项并将计数存储为新对象

我可以将 JavaScript 函数存储在数组中吗?