用JavaScript将对象转换为用于存储的数组,再转换回用于应用程序的数组

Convert object to array for storage and back to array for application in JavaScript

本文关键字:数组 转换 用于 应用程序 JavaScript 存储 对象      更新时间:2023-09-26

我有一个这样的对象,它是由angular中的动态复选框生成的:

{"United States":true,"Canada":true,"Australia":false}

就存储值而言,它非常有效,但为了能够在数据库中搜索国家/地区的值,我希望能够将其转换为数组,并将其保存到数据库(MongoDb/Mongoose)中,如:

["United States":true,"Canada":true,"Australia":false] 

然后将其转换回与应用程序完全相同类型的对象。

做这件事最简单的方法是什么?

我可以将值插值为:

"string", boolean, "string", boolean, "string", boolean

为此:

// Taking the object...
var countryObject = {"United States":true,"Canada":true,"Australia":false};
// ... and simplifying for explanation as:
var countryObject = {"A":true,"B":true,"C":false};
var compact = [];
for(var prop in countryObject){
    compact.push( prop );
    compact.push( countryObject[prop] );
}
// compact yields interpolated values as a basic array:
// ["A", true, "B", false, "C", true];

仅供参考:您现在可以非常有效地搜索数组,方法是找到字符串值的索引,然后添加1,通过添加1:来检索布尔值

var foundIndex = compact.indexOf("B");
var result;
if(foundIndex > -1){
    result = countryArray[foundIndex + 1];
}

拼接:

var compact = ["A", true, "B", false, "C", true];
var countryObject = {};
for(var i=0; i<compact.length; i+= 2){
    countryObject[compact[i]] = compact[i+1];
}

您所要求的内容实际上没有意义,因为您演示的数组是一个具有键:值对的关联数组,在JavaScript中,它是一个对象。

您可以创建一个数组,并将其分配给key:value对,如:

var a = [];
a['test'] = 1;

然而,这只是因为数组是JavaScript中的对象