Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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中将对象转换为数组,而不将object.entries的键和值放入字符串中_Javascript_Arrays_Object - Fatal编程技术网

在JavaScript中将对象转换为数组,而不将object.entries的键和值放入字符串中

在JavaScript中将对象转换为数组,而不将object.entries的键和值放入字符串中,javascript,arrays,object,Javascript,Arrays,Object,我要转换如下所示的对象: let obj = { arabicLang: false, cancelVisitEmailAlert: false, canselVisitSmsAlert: false } [ "arabicLang": false, "cancelVisitEmailAlert": false, "canselVisitSmsAlert": false ] 进入一个键值对数组,如下所示: let obj = { a

我要转换如下所示的对象:

let obj = {
arabicLang: false,
cancelVisitEmailAlert: false,
canselVisitSmsAlert: false
}
[
"arabicLang": false,
"cancelVisitEmailAlert": false,
"canselVisitSmsAlert": false
]
进入一个键值对数组,如下所示:

let obj = {
arabicLang: false,
cancelVisitEmailAlert: false,
canselVisitSmsAlert: false
}
[
"arabicLang": false,
"cancelVisitEmailAlert": false,
"canselVisitSmsAlert": false
]
我阅读了StackOverflow中的所有问题,但没有一个是我的问题

我尝试了这个方法,但它返回字符串中的键和值:

    let data = [];
     for (const [key, value] of Object.entries(obj)) {
       data.push(createData(key, value));
     }

function createData(key, value) {
    return key + ":" + value;
  }
也可以试试这个:

    let arr = Array.of(obj)
      console.log(arr) 
      /* output is 
      [{
    arabicLang: false,
    cancelVisitEmailAlert: false,
    canselVisitSmsAlert: false
    }]

*/

它保留对象容器

您可以使用
.reduce
.map
如:

让obj={
阿拉伯丁:错,
cancelVisitEmailAlert:false,
canselVisitSmsAlert:错误
};
//使用。减少
const result=Object.entries(obj).reduce((acc[key,value])=>{
acc[key]??={[key]:value};
返回acc;
}, {});
console.log(Object.values(result));
//使用.map
constresult2=Object.entries(obj.map)([key,value])=>({[key]:value}));

console.log(result2)
唯一的方法不是
createData
方法,而是使用对象文字来简化

让obj={
阿拉伯丁:错,
cancelVisitEmailAlert:false,
CanselVisitsmAlert:错,
};
让数据=[];
for(Object.entries(obj))的常量[key,value]{
data.push({[key]:value});
}

控制台日志(数据)
arabicLang:false
作为一个元素不起作用(这是一个语法错误),您希望它成为一个对象吗:
{arabicLang:false}
?我认为您不能像这样创建
数组
,如果您想创建
对象的
数组
,请使用
对象项(obj)
,这将导致
[{a:1},{b:2}]
Javascript中的所有对象键都是字符串,在编写对象文本时不需要引号。您可以使用object.entries()并平铺结果,但结果将是逗号分隔的,而不是
分号逗号
,因为
[arabicLang:false]
是无效的语法。我们无法真正知道您希望它做什么。为什么您想要数组而不是对象?您计划如何使用该值?也许这有助于理解您试图实现的目标。只需
对象。条目将生成所需的结果。object.entries将生成类似[[key1,val1],[key2,val2]]对吗?如果我们需要像对象数组一样的数组,这里就是。可能吧,但是OP的表示法无效,会让人困惑。对我来说,“键值对数组”就是
对象。条目
返回的内容。