我有这样的东西。
let Filus = {
male: {
hat: [1],
jacket: [2],
pants: [3],
shoes: [4],
suit: [5]
}
};
我想从该对象获取此数组。
let Filus = [1,2,3,4,5];
如何做到?
答案 0 :(得分:6)
您可以使用Object.values()
获取嵌套对象male
的值,然后使用flat()
let Filus = { male : { hat: [1], jacket: [2], pants: [3], shoes: [4], suit: [5] } };
const res = Object.values(Filus.male).flat();
console.log(res)
您也可以使用flat()
和散布运算符在不使用concat()
的情况下执行此操作。
let Filus = { male : { hat: [1], jacket: [2], pants: [3], shoes: [4], suit: [5] } };
const res = [].concat(...Object.values(Filus.male));
console.log(res)
答案 1 :(得分:4)
只需使用Object.values
和flat
-即使您不知道嵌套对象的键也可以使用:
let Filus = {
male: {
hat: [1],
jacket: [2],
pants: [3],
shoes: [4],
suit: [5]
}
};
const res = Object.values(Object.values(Filus)[0]).flat();
console.log(res);
ES5语法:
var Filus = {
male: {
hat: [1],
jacket: [2],
pants: [3],
shoes: [4],
suit: [5]
}
};
var res = Object.keys(Filus[Object.keys(Filus)[0]]).map(function(key) {
return Filus[Object.keys(Filus)[0]][key];
}).reduce(function(acc, curr) {
return acc.concat(curr);
});
console.log(res);
如果有钥匙,也很容易:
let Filus = {
male: {
hat: [1],
jacket: [2],
pants: [3],
shoes: [4],
suit: [5]
}
};
const res = Object.values(Filus.male).flat();
console.log(res);
ES5语法:
var Filus = {
male: {
hat: [1],
jacket: [2],
pants: [3],
shoes: [4],
suit: [5]
}
};
var res = Object.keys(Filus.male).map(function(key) {
return Filus.male[key];
}).reduce(function(acc, curr) {
return acc.concat(curr);
});
console.log(res);
答案 2 :(得分:2)
您可以使用Generator
并返回该对象及其嵌套对象的所有找到的值。
这种方法依赖于对象的语言固有顺序。
function* values(o) {
if (o && typeof o === 'object') for (let v of Object.values(o)) yield* values(v);
else yield o;
}
let filus = { male: { hat: [1], jacket: [2], pants: [3], shoes: [4], suit: [5] } },
result = [...values(filus)];
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 3 :(得分:1)
如果对象来自JSON字符串,则可以在解析期间提取数字:
var arr = [], json = '{"male":{"hat":[1],"jacket":[2],"pants":[3],"shoes":[4],"suit":[5]}}'
JSON.parse(json, (k, v) => v.toFixed && arr.push(v))
console.log(arr)