Javascript / jQuery:嵌套循环,防止覆盖对象属性

用户名

我有一个功能,应该建立一个键数组。这些键将具有一系列对象作为值。

我彼此之间嵌套了一些循环,并且距离解决方案还很近,但是在最后一个循环中,我犯了一个错误,并且看不到解决方案。

该函数在带有ID的数组上循环。这些将是输出数组的键值。之后,它将遍历具有许多对象的数组。这些对象具有属性“类别”。其中一些有一个,其他一些。因此,对于for循环,我遍历所有类别。

如果类别与id相同,则应将对象推送到var objs,该对象将添加到右键中。

一切正常,但是,我希望对象仅保存一个类别。所以我在最后一个循环中声明了一个新的var,将obj放在其中并设置obj.category。不幸的是,这覆盖了“源” array [x] .category。这不好,因为会发生这样的问题:在此函数中只有两个类别的对象只能被找到一次,并且必须被找到两次,因此可以被保存两次(每个代表键值一次)。

一小段代码的大量解释...

$.each(unique_id, function(i, el){
    var objs = [];

    for(var x in array)
    {   
        for(var j=0; j<array[x].category.length; j++)
        {
            if(array[x].category[j] == el)
            {
                var obj = array[x];
                obj.category = el;
                objs.push(obj);
            }
        }
    }
    data[el] = objs;
})
谢里什·瓦沙姆潘扬

发生的事情是:obj和array [x]都指向同一个对象。它们是指向同一对象的两个引用。您可以尝试以下操作:

     $.each(unique_id, function(i, el){
             var objs = [];

            for(var x in array)
            {   
               for(var j=0; j<array[x].category.length; j++)
               {
                   if(array[x].category[j] == el)
                   {
                      var obj = {};
                      $.extend(true,obj,array[x]);
                      obj.category = el;
                      objs.push(obj);
                   }
               }
            }
            data[el] = objs;
     });

另外,在javascript中,变量是函数作用域的,因此即使您在内部循环中声明它们,它们在整个函数中也是可见的,不仅在定义它的内部循环中可见。当然,$ extend将复制存在于array [x]上的每个属性以及嵌套对象及其属性。如果您不想要那样。只是使用

       var obj = {};
       obj.category = array[x].category;

提供的类别也不是对象。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript / jQuery:嵌套循环,防止覆盖对象属性

来自分类Dev

Javascript / jQuery:嵌套循环,防止覆盖对象属性

来自分类Dev

覆盖对象属性Javascript

来自分类Dev

Javascript覆盖对象属性

来自分类Dev

无法覆盖JavaScript对象的属性

来自分类Dev

用javascript循环遍历javascript嵌套对象

来自分类Dev

循环中嵌套对象的JavaScript调用方法

来自分类Dev

基于Javascript的嵌套循环和对象

来自分类Dev

循环遍历动态嵌套的 javascript 对象

来自分类Dev

向嵌套对象添加属性-Javascript

来自分类Dev

jQuery / Javascript基本对象属性

来自分类Dev

javascript - 检查嵌套对象上的属性与对象中的“属性”失败

来自分类Dev

使用for循环访问javascript中的对象属性?

来自分类Dev

更新for循环内的javascript对象属性?

来自分类Dev

如何在 JavaScript 中的嵌套对象中引用对象属性

来自分类Dev

如何覆盖JavaScript属性

来自分类Dev

如何覆盖JavaScript属性

来自分类Dev

JavaScript遍历对象属性-卡在循环引用循环中

来自分类Dev

覆盖JavaScript文件对象

来自分类Dev

javascript 对象被覆盖

来自分类Dev

防止将属性添加到JavaScript对象

来自分类Dev

JavaScript循环嵌套变量

来自分类Dev

javascript中的嵌套for循环

来自分类Dev

Javascript:循环访问嵌套窗口对象以查找特定元素

来自分类Dev

Javascript循环问题并将嵌套对象转换为数组

来自分类Dev

Javascript:循环访问嵌套窗口对象以查找特定元素

来自分类Dev

无法在JavaScript中的嵌套对象/数组中正确循环

来自分类Dev

循环遍历嵌套的json数组对象并求和javascript

来自分类Dev

检查对象javascript中是否存在嵌套属性

Related 相关文章

热门标签

归档