【问题标题】:JavaScript: Convert array based on value of sub itemJavaScript:根据子项的值转换数组
【发布时间】:2016-08-16 10:05:59
【问题描述】:

在 JavaScript 中,我想转换一个数组。

[
    {
        'size' : 'm',
        'inStock' : true
    },
    {
        'size' : 'm',
        'inStock' : true
    },
    {
        'size' : 's',
        'inStock' : true
    },
    {
        'size' : 'm',
        'inStock' : false
    },
    {
        'size' : 'm',
        'inStock' : true
    },
    {
        'size' : 'xl',
        'inStock' : true
    },
    {
        'size' : 'xl',
        'inStock' : true
    },
    {
        'size' : 'm',
        'inStock' : true
    },
    {
        'size' : 'xxl',
        'inStock' : false
    },
    {
        'size' : 'xxl',
        'inStock' : false
    },
    {
        'size' : 'xxxl',
        'inStock' : false
    },
    {
        'size' : 'xxxl',
        'inStock' : true
    }
]       

到这里:

[
    {
        'size' : 's',
        'inStock' : true
    },
    {
        'size' : 'm',
        'inStock' : true
    },,
    {
        'size' : 'xl',
        'inStock' : true
    },
    {
        'size' : 'xxl',
        'inStock' : true
    },
    {
        'size' : 'xxxl',
        'inStock' : true
    }
]       

所以我想合并数组,如果一个或多个项目的“inStock”设置为 true,则必须将其设置为该值,否则为 false。

我尝试遍历数组,但这对我不起作用。

【问题讨论】:

    标签: javascript json loops filter


    【解决方案1】:

    这个也可以用

    assign your array to var arr = [...your array];
    var Newarray = arr.filter(function(data,i){
    return data.inStock == true;
    })
    
    console.log(Newarray)
    

    【讨论】:

      【解决方案2】:

      使用所有花哨的新函数、对象和运算符:

      var map = new Map();
      arr.forEach( (el) => {
      
        // make sure there is an entry in the mao
        let item = map.get( el.size );
      
         if( item ) {
           // item is already set
           item.inStock = el.inStock || item.inStock;
         } else {
           // new item
           map.set( el.size, el );
         }
      
      });
      let newArr = [ ... map.values() ];
      

      【讨论】:

        猜你喜欢
        • 2018-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多