【问题标题】:How to store all including repeating(non-unique) object in javascript array?如何在javascript数组中存储所有包括重复(非唯一)对象?
【发布时间】: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");
  }

【问题讨论】:

  • 这条线是做什么的:for (x in result) { ... }x 在代码中的任何位置都没有赋值。
  • x 循环到结果中的项目数。
  • 第一步,将for (x in result) 替换为for (let x=0; x<result.length; x++) 然后告诉我们会发生什么
  • 相同的结果先生,问题是 indistinctresult 只存储唯一值。

标签: javascript node.js arrays express mongoose


【解决方案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 循环和索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2021-11-25
    • 2021-02-26
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多