用JavaScript将对象转换为用于存储的数组,再转换回用于应用程序的数组
Convert object to array for storage and back to array for application in JavaScript
我有一个这样的对象,它是由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中的对象。
相关文章:
- 使用JS将数组转换为json对象
- 本地存储中的字符串到字节数组转换
- Javascript函数,用于将数组转换为“;2-元组”;
- php数组转换为javascript
- 在Javascript中将一个值和字符串数组转换为if语句
- 将数组转换为javascript格式的字符串
- 如何将数组转换为有效的json
- JSON数组转换为JS对象数组
- 如何将数组转换为映射
- JavaScript:将字符串数组转换为文本区域
- javascript |数组转换
- 数组转换为多个字符串
- Javascript将数组转换为字符串并使其反向输出
- 将Byte数组转换为Angularjs中的Base64字符串
- 将对象数组转换为与nodejs/pg/unnest兼容的数组
- 将Javascript数组转换为PHP数组
- 将数组转换为键值对
- 使用Ramda将对象数组转换为普通对象
- javascript将对象数组转换为字符串以存储在s3中
- 使用.join方法将数组转换为不带逗号的字符串