代码之家  ›  专栏  ›  技术社区  ›  Nikhil Savaliya

来自对象的数组中的特定数据

  •  1
  • Nikhil Savaliya  · 技术社区  · 8 年前

    我有这样的数据,

    const data = {
        pizza: ['Pizza Margherita', 'peppy paneer'],
        sandwich: [],
        burger: ['Veg Maharaja'],
        number: [0,2]
    };
    

    我想以数组的形式存储数据,

    [ 'Pizza Margherita', 'peppy paneer','Veg Maharaja' ]
    

    我就是这么想的,

    const food = [];
    for(key in data) {
        if (data.hasOwnProperty(key)) {
            const element = data[key];
            element.forEach(el => {
                food.push(el)
            });
        }
    }
    //It Gives output like [ 'Pizza Margherita', 'peppy paneer', 'Veg Maharaja', 0, 2 ]
    

    但我想忽略最后一个密钥号。

    4 回复  |  直到 8 年前
        1
  •  6
  •   Eddie    8 年前

    可以使用 Object.values 您可以使用 concat 传播语法。使用 filter 只为了得到绳子。

    const data = {
      pizza: ['Pizza Margherita', 'peppy paneer'],
      sandwich: [],
      burger: ['Veg Maharaja'],
      number: [0, 2]
    };
    
    const result = [].concat(...Object.values(data)).filter(isNaN);
    console.log(result);
        2
  •  1
  •   Muhammad Usman    8 年前

    或者您可以简单地排除名为 number

    const data = {
        pizza: ['Pizza Margherita', 'peppy paneer'],
        sandwich: [],
        burger: ['Veg Maharaja'],
        number: [0,2]
    };
    
    const food = [];
    for(key in data) {
        if (data.hasOwnProperty(key) && key!='number') {
            const element = data[key];
            element.forEach(el => {
                food.push(el)
            });
        }
    }
    
    console.log(food)
        3
  •  0
  •   zabusa    8 年前

    您需要设置一个条件以避免在 number 键值。

    const data = {
        pizza: ['Pizza Margherita', 'peppy paneer'],
        sandwich: [],
        burger: ['Veg Maharaja'],
        number: [0,2]
    };
    
    const food = [];
    for(key in data) {
        if (data.hasOwnProperty(key)) {
            const element = data[key];
            if(key !== 'number'){
            element.forEach(el => {
                food.push(el)
            });
            }
            
        }
    }
    
    console.log(food)
        4
  •  0
  •   Akhil Aravind    8 年前

    这是一种老式的方法,但结果是你所期望的。

    var data = {
        pizza: ['Pizza Margherita', 'peppy paneer'],
        sandwich: [],
        burger: ['Veg Maharaja'],
        number: [0,2]
    };
    
    var food = [];
    for(key in data) {
        if (data.hasOwnProperty(key)) {
            const element = data[key];
            element.forEach(el => {
                if(typeof el=='string') food.push(el)
            });
        }
    }
    
    console.log(food)