对象中数组中的特定数据

时间:2018-06-19 11:27:16

标签: javascript arrays object

我有类似的数据,

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 个答案:

答案 0 :(得分:6)

您可以使用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);

答案 1 :(得分:1)

或者您可以简单地排除名为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)

答案 2 :(得分:0)

您需要设置一个条件以避免对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)

答案 3 :(得分:0)

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

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)