我有类似的数据,
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 ]
但是我想忽略最后一个键号。
答案 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)