Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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_Json_Object_Key_Double Quotes - Fatal编程技术网

Javascript-创建键被双引号包围的对象

Javascript-创建键被双引号包围的对象,javascript,json,object,key,double-quotes,Javascript,Json,Object,Key,Double Quotes,我有一个初始数组,它应该被迭代并创建新的对象。初始数组为: let数组=[ {键:“键1”,翻译为:“某些文本1”}, {key2:“key2”,翻译为:“一些文本2”}, {key3:“key3”,翻译为:“一些文本3”}, ]; 然后我迭代它并创建对象: const final={}; const language=“eng”; for(数组的let项){ final[item.key]={}; 最终[item.key][语言]=item.translation; } 它最终成为对象:

我有一个初始数组,它应该被迭代并创建新的对象。初始数组为:

let数组=[
{键:“键1”,翻译为:“某些文本1”},
{key2:“key2”,翻译为:“一些文本2”},
{key3:“key3”,翻译为:“一些文本3”},
];
然后我迭代它并创建对象:

const final={};
const language=“eng”;
for(数组的let项){
final[item.key]={};
最终[item.key][语言]=item.translation;
}
它最终成为对象:

{
关键1:{
英语:“一些文本1”
},
关键2:{
英语:“一些文本2”
},
关键3:{
英语:“一些文本3”
}
}
我需要将这个外部键(
key1
key2
key3
)用双引号括起来,这样最终的对象就变成:

{
“关键1”:{
英语:“一些文本1”
},
“键2”:{
英语:“一些文本2”
},
“键3”:{
英语:“一些文本3”
}
}

我想你要找的是
JSON.stringify()。让我们看看这里:

let数组=[
{键:“键1”,翻译为:“某些文本1”},
{key2:“key2”,翻译为:“一些文本2”},
{key3:“key3”,翻译为:“一些文本3”},
];

log(JSON.stringify(array))如果使用
JSON.stringify()
获取数组的JSON字符串,则会完美地引用以下值:

let数组={
关键1:{
英语:“一些文本1”
},
关键2:{
英语:“一些文本2”
},
关键3:{
英语:“一些文本3”
}
};

log(JSON.stringify(array))您编写的循环不正确。应该是这样的:

let数组=[
{键:“键1”,翻译为:“某些文本1”},
{key2:“key2”,翻译为:“一些文本2”},
{key3:“key3”,翻译为:“一些文本3”},
];
常量final={};
const language=“eng”;
for(数组的let项){
最终[对象值(项)[0]]={};
最终[Object.values(item)[0]][language]=item.translation;
}

log(JSON.stringify(final))不明白这个问题<代码>JSON.stringify(数组)
将完全满足您的需求?!“我的结局是”…你呢?也许这只是你用来检查它的东西是如何显示它的,因为在这一点上,它是一个对象,而不是JSON。JSON是文本。stringify()将生成有效的JSON字符串。现在还不清楚你是如何得出结论的,或者你到底在担心什么。你为什么需要这种奇怪的格式?“外键双引号,内键(语言)应该保持不引号”……这不是有效的JSON,所以不清楚你为什么认为这是可取的。你有什么可能的理由想要那样?我看不出它对以后的任何事情有什么帮助,它所做的一切都使您发送JSON到的任何程序都不太可能正确读取它。是的,您需要理解对象和JSON之间的区别。JSON是对象的文本表示形式。调试代码时,还可以检查对象并查看对象的文本表示形式。它可能是,也可能不是,碰巧也是一个JSON表示。但一般来说,当您希望将数据发送到应用程序之外的某个位置时(例如在AJAX请求中),只需要主动创建JSON。如果您只是将其传递给其他一些JS代码,例如,正如您提到的将其传递给React方法,那么就将其作为一个对象保留。正如我前面所写的,
JSON.stringify
生成字符串,其中所有键(外部键和内部键都被引用),这不是我所要求的。但是,我不需要字符串作为最终输出,而是需要对象:)1。这与问题中的工作示例有何不同?2.这不是使用
.map()
的方式。
let array = [
    {key: "key1", translation: "some text 1"},
    {key: "key2", translation: "some text 2"},
    {key: "key3", translation: "some text 3"},
];

    let data={};
    array.map(item => {
        let d=item.key;
        let da=item.translation;
        data[d]=da;
    })
}

console.log(data)