[英]create variables from an object
我正在做一个项目,我得到一个 object 这样的输入:
const obj = {
a: 'somestring',
b: 42,
c: {
d: 'foo',
e: 'bar'
},
f: [1, 2]
};
我需要创建一些变量来访问这个 output:
const a = "somestring"
const b = 42
const c.d = "foo"
const c.e = "bar"
const f[0] = 1
const f[1] = 2
我用这段代码得到了结果:
for (const [k1, v1] of Object.entries(obj)) {
if (typeof v1 === "object") {
if (Array.isArray(v1)) {
for (const [k2, v2] of Object.entries(v1)) {
console.log(`const ${k1}[${k2}] = ${v2}`);
}
} else {
for (const [k2, v2] of Object.entries(v1)) {
console.log(`const ${k1}.${k2} = ${v2}`);
}
}
} else {
console.log(`const ${k1} = ${v1}`);
}
}
但是当我得到一个像这样更复杂的 object 时:
const obj = {
a: [
{
b: 'lorem'
},
{
c: 'ipsum'
}
],
d: {
e: {
f : 'foobar'
}
}
};
我的 output 看起来像这样:
const a[0] = [object Object]
const a[1] = [object Object]
const d.e = [object Object]
我找不到任何相关的解决方案。 是否有解决方案或 npm package?
您可以在 JS 中使用eval
function 来完成:
const obj = { a: 'somestring', b: 42, c: { d: 'foo', e: 'bar' }, f: [1, 2] }; var log = console.log; for (let key in obj) { //log(key); eval(`var ${key} = obj.${key}`); } log(a); log(b); log(c); log(f);
有一个叫做解构文档的功能点击这里
正如文档所说,此功能将帮助您从嵌套的 object 创建新变量。
采用嵌套的 object,您可以访问其叶值并将它们直接分配给 vars,如下所示:
const o = { a: 'a', b: { c: 'c', d: { e: 'e' } } }; const {a,b: { c, d: {e} }} = o; alert(a); alert(c); alert(e);
编辑:它适用于 arrays 以及不仅仅是对象
我想你想要这样的东西:
const obj = { a: 'somestring', b: 42, c: { d: 'foo', e: 'bar' }, f: [1, 2] }; const parse = (obj, prefix = '', isArray=false) => { Object.entries(obj).forEach(([k, v]) => { if (typeof v === 'object') parse(v, `${k}`, Array.isArray(v)) else { const value = (typeof v === 'string')? `"${v}"`: v; const before = isArray? '[': prefix? '.': ''; const after = isArray? ']': ''; console.log(`const ${prefix}${before}${k}${after} = ${value}`) } }); } parse(obj);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.