Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不声明变量的javascript解构_Javascript - Fatal编程技术网

不声明变量的javascript解构

不声明变量的javascript解构,javascript,Javascript,在上面的场景中,我如何将squadName,homitory,formed,secretBase,active放入具有相同名称的变量中,而不必硬编码const{squadName,homitory,formed,secretBase,active}=data零件 是否可以使用json数据中的键动态创建const{squadName,homitory,formed,secretBase,active}部分,并像const{squadName,homitory,formed,secretBase,a

在上面的场景中,我如何将
squadName,homitory,formed,secretBase,active
放入具有相同名称的变量中,而不必硬编码
const{squadName,homitory,formed,secretBase,active}=data零件


是否可以使用json数据中的键动态创建
const{squadName,homitory,formed,secretBase,active}
部分,并像
const{squadName,homitory,formed,secretBase,active}=data那样使用它

您可以采用如下的黑客方法:

json='{“squadName”:“超级英雄队”,“家乡”:“大都会”,“成立”:2016年,“秘密基地”:“超级塔”,“活跃”:真实,“成员”:[{“姓名”:“分子人”,“年龄”:29岁,“秘密性”:“丹·朱克斯”,“力量”:[“抗辐射”,“变小”,“辐射爆炸]}];
data=JSON.parse(JSON);
for(让对象的[key,value]项(数据)){
评估(键+“=值”)
}

log(squadName、homely、formed、secretBase、active)
您可以在解析后立即访问这些变量

json = '{"squadName":"Super hero squad","homeTown":"Metro City","formed":2016,"secretBase":"Super tower","active":true,"members":[{"name":"Molecule Man","age":29,"secretIdentity":"Dan Jukes","powers":["Radiation resistance","Turning tiny","Radiation blast"]}]}';

data = JSON.parse(json);

console.log(data);

const {squadName, homeTown, formed, secretBase, active} = data;

console.log(squadName, homeTown, formed, secretBase, active)

我不确定您的用例是什么,但是如果您只需要全局性地使用这些变量,您可以从
窗口
对象中设置它们(参见本文:)

您可以做的是遍历数据并创建变量:

let json = '{"squadName":"Super hero squad","homeTown":"Metro City","formed":2016,"secretBase":"Super tower","active":true,"members":[{"name":"Molecule Man","age":29,"secretIdentity":"Dan Jukes","powers":["Radiation resistance","Turning tiny","Radiation blast"]}]}';

let data = JSON.parse(json);

console.log(data.squadName);
console.log(data.homeTown);
console.log(data.formed);
console.log(data.secretBase);
console.log(data.active);

这将为JSON中的每个条目创建变量。

快速答案是。当你事先知道你在寻找什么时,你会特别使用const。但实际上,你可以实现你想要做的

当您有一大堆要以编程方式处理的项目时,像数组和JavaScript对象这样的数据结构更有意义,但这最适合于您事先不知道将遇到什么的情况

如果您事先知道要使用这些字段,那么您已经拥有了所需的内容:

json = '{"squadName":"Super hero squad","homeTown":"Metro City","formed":2016,"secretBase":"Super tower","active":true,"members":[{"name":"Molecule Man","age":29,"secretIdentity":"Dan Jukes","powers":["Radiation resistance","Turning tiny","Radiation blast"]}]}';

data = JSON.parse(json);

Object.entries(data).forEach((item) => {
  window[item[0]] = item[1]
})
如果您事先不知道,那么以编程方式选择元素并将其放入新对象或数组中是有意义的。例如,如果要创建仅包含字符串值的新对象,则:

const {squadName, homeTown, formed, secretBase, active} = data;
这将返回这个对象:

const justStrings = Object.keys(data)
  .filter((k) => typeof data[k] === 'string')
  .reduce((newObj, k) => {
    newObj[k] = data[k];
    return newObj;
  }, {});
您可以使用全局属性动态分配json数据属性键值,而无需在解构中硬编码
const{squadName,homightry,formed,secretBase,active}=data

json='{“squadName”:“超级英雄队”,“家乡”:“大都会”,“成立”:2016年,“秘密基地”:“超级塔”,“活跃”:真实,“成员”:[{“姓名”:“分子人”,“年龄”:29岁,“秘密性”:“丹·朱克斯”,“力量”:[“抗辐射”,“变小”,“辐射爆炸]}];
data=JSON.parse(JSON);
控制台日志(数据);
Object.entries(data.forEach(([key,val])=>globalThis[key]=val);

console.log(squadName、homerium、formed、secretBase、active)
是否将它们存储到一个数组中?@user9879287当然……这解决了问题,但不建议使用
eval
:!
{
  squadName: 'Super hero squad',
  homeTown: 'Metro City',
  secretBase: 'Super tower'
}