我有一个像这样的对象,它是从 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 检索 bool 值:
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 - 将对象转换为数组进行存储并返回数组以在 JavaScript 中应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34079639/