数组推入for循环在对象容器中具有不同的值

莎拉·戈麦斯(Sarah Gomez)

我是编程新手,只是想知道为什么输出newContainer与我在forloop中推送的内容不同。检查console.log以获取详细信息。

var data = [{
    Fruit: "Apple",
    Count: "1",
    Date: "2014"
}, {
    Fruit: "Banana",
    Count: "1",
    Date: "2015"
}, {
    Fruit: "Carrot",
    Count: "1",
    Date: "2014"
}, {
    Fruit: "Orange",
    Count: "1",
    Date: "2016"
}, {
    Fruit: "Apple",
    Count: "1",
    Date: "2012"
}, {
    Fruit: "Banana",
    Count: "1",
    Date: "2011"
}, {
    Fruit: "Apple",
    Count: "1",
    Date: "2010"
}];



var lineItemCount = new Array(5).fill(0);
var lineItems = ["Apple", "Banana", "Carrot", "Orange"];
var newContainer = [];

for (var i = 0; i < data.length; i++) {

    var checkItem = lineItems.indexOf(data[i].Fruit); //get index of item in lineItems

    lineItemCount[checkItem] = lineItemCount[checkItem] + 1;
    lineItemCount[0] = data[i].Date;

    newContainer.push(lineItemCount);
    console.log(lineItemCount);

};
console.log(newContainer);

我试图获得如下输出。谢谢!

["2014", 1, 0, 0, 0],
["2015", 1, 1, 0, 0],
["2014", 1, 1, 1, 0],
["2016", 1, 1, 1, 1],
["2012", 2, 1, 1, 1],
["2011", 2, 2, 1, 1],
["2010", 3, 1, 1, 1],
亭子

主要问题是您将相同的数组一遍又一遍地推到结果上。尽管在推送时,数组的值与下一次推送时的值不同,但数组是引用,因此,当数组中的值增加时,对该数组的任何引用都将看到此值,即使您已推送的那些引用也是如此。 。

这是更正后的代码,用于slice(0)将数组元素复制到新数组中,然后将其推送:

// 5 elements, first one for date
var lineItemCount = new Array(5).fill(0);

var lineItems = [null, "Apple", "Banana", "Carrot", "Orange"];
var newContainer = [];

for (var i = 0; i < data.length; i++) {

    var checkItem = lineItems.indexOf(data[i].Fruit); //get index of item in lineItems

    lineItemCount[checkItem] = lineItemCount[checkItem] + 1;
    lineItemCount[0] = data[i].Date;

    newContainer.push(lineItemCount.slice(0)); // take array copy
    console.log(lineItemCount);

};
console.log(newContainer);

还要注意数组中带有水果名称的其他项。这样可以确保您不会增加为日期保留的索引0处的元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数组推入for循环在对象容器中具有不同的值

来自分类Dev

将对象推入数组后,数组中的每个对象都具有相同的值

来自分类Dev

将值推入具有相同值的对象中

来自分类Dev

MongoDB $ lookup在具有不同值的对象数组中

来自分类Dev

在对象中插入推入数组的对象文字

来自分类Dev

将对象值分配给对象数组中具有不同值的数组

来自分类Dev

仅提取在对象中具有值的属性

来自分类Dev

如何用Yup验证在对象数组中至少一个对象键具有真实值?

来自分类Dev

javascript在对象数组中设置所有值

来自分类Dev

Javascript:根据数组过滤键后,在对象中查找具有最大值的键

来自分类Dev

在循环中创建多个具有不同名称的对象以存储在数组列表中

来自分类Dev

我如何使用javascript中具有相同键的对象在对象中创建对象数组

来自分类Dev

在具有不同值的对象数组(即数组)中查找对象的最有效方法是什么?

来自分类Dev

推入堆栈的char值具有不同的值

来自分类Dev

推入堆栈的char值具有不同的值

来自分类Dev

在对象数组中搜索值

来自分类Dev

在对象数组中获取键值的值

来自分类Dev

在对象数组 js 中搜索值

来自分类Dev

在对象中查找数组值

来自分类Dev

如何使用JavaScript中的“ for in”循环获取存储在对象中的键的数组值

来自分类Dev

在对象中具有类

来自分类Dev

如何从一键具有Array的对象数组中获取不同的值并计算JavaScript?

来自分类Dev

从 JSONPath 中的不同数组对象查询具有特定值的键

来自分类Dev

Javascript 测试具有数组的对象中是否存在对象键

来自分类Dev

在对象中迭代数组后,为键创建具有单行的数组

来自分类Dev

如何构造循环以检查嵌套数组中是否不存在对象值

来自分类Dev

为什么我的对象没有被推入不同的数组?

来自分类Dev

在对象列表中获取具有最大属性值的对象

来自分类Dev

将具有变量作为属性名称的对象推入数组

Related 相关文章

  1. 1

    数组推入for循环在对象容器中具有不同的值

  2. 2

    将对象推入数组后,数组中的每个对象都具有相同的值

  3. 3

    将值推入具有相同值的对象中

  4. 4

    MongoDB $ lookup在具有不同值的对象数组中

  5. 5

    在对象中插入推入数组的对象文字

  6. 6

    将对象值分配给对象数组中具有不同值的数组

  7. 7

    仅提取在对象中具有值的属性

  8. 8

    如何用Yup验证在对象数组中至少一个对象键具有真实值?

  9. 9

    javascript在对象数组中设置所有值

  10. 10

    Javascript:根据数组过滤键后,在对象中查找具有最大值的键

  11. 11

    在循环中创建多个具有不同名称的对象以存储在数组列表中

  12. 12

    我如何使用javascript中具有相同键的对象在对象中创建对象数组

  13. 13

    在具有不同值的对象数组(即数组)中查找对象的最有效方法是什么?

  14. 14

    推入堆栈的char值具有不同的值

  15. 15

    推入堆栈的char值具有不同的值

  16. 16

    在对象数组中搜索值

  17. 17

    在对象数组中获取键值的值

  18. 18

    在对象数组 js 中搜索值

  19. 19

    在对象中查找数组值

  20. 20

    如何使用JavaScript中的“ for in”循环获取存储在对象中的键的数组值

  21. 21

    在对象中具有类

  22. 22

    如何从一键具有Array的对象数组中获取不同的值并计算JavaScript?

  23. 23

    从 JSONPath 中的不同数组对象查询具有特定值的键

  24. 24

    Javascript 测试具有数组的对象中是否存在对象键

  25. 25

    在对象中迭代数组后,为键创建具有单行的数组

  26. 26

    如何构造循环以检查嵌套数组中是否不存在对象值

  27. 27

    为什么我的对象没有被推入不同的数组?

  28. 28

    在对象列表中获取具有最大属性值的对象

  29. 29

    将具有变量作为属性名称的对象推入数组

热门标签

归档