如何在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从特定的单个数组中查找所有不重复的组合