javascript - 将对象转换为数组进行存储并返回数组以在 JavaScript 中应用

标签 javascript arrays angularjs object mongoose

我有一个像这样的对象,它是从 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/

相关文章:

javascript - 我想更新当前页面 codeigniter 中的 ID

c - 如何找到数组中最大和最小数字的位置?

javascript - 将范围值从指令传递到 Controller - AngularJS

javascript - 动态多种形式并处理每个 AngularJS 的 ng-model

javascript - node.js路由中的URL设计

javascript - 使用凭据或 token 从 Web 应用程序自动登录到 grafana

arrays - 按低于特定数字的值过滤数组

javascript - 如何对对象数组进行分组和求和?

javascript - FullCalendar 独特的自定义每周 View

javascript - Angularjs - Firebase 显示当前登录的用户数据