来自输入的Javascript转换数组复选框

来自输入的Javascript转换数组复选框,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我使用ng repeat从带有角度的模型创建了多个输入复选框s,当我选择其中一些复选框时,我得到以下结果: var accounts = [{'AA764':true}, {'AA324': true}, {'AA234': false}, {'AA553': true}, {'AA7365': false}]; 但我需要以下结构来操作调用和REST API的控制器: var accounts = ['AA764', 'AA324', 'AA553']; 就那些选中的checkboxes,我

我使用
ng repeat
从带有角度的
模型创建了多个输入
复选框
s,当我选择其中一些复选框时,我得到以下结果:

var accounts = [{'AA764':true}, {'AA324': true}, {'AA234': false}, {'AA553': true}, {'AA7365': false}];
但我需要以下结构来操作调用和REST API的控制器:

var accounts = ['AA764', 'AA324', 'AA553'];
就那些选中的
checkboxe
s,我已经尝试使用javascript
foreach
函数,但我无法让它工作。有没有可以帮助我的angular或bower图书馆


谢谢。

您可以使用名为Lodash的库。这是一个实用程序库,它提供了许多函数来简化这样的任务。虽然这可以使用纯JS实现,但考虑到它在其他场景中的可用性,我将使用这个库

您可以使用以下选项:

var账户=[{'AA764':true},{'AA324':true},{'AA234':false},{'AA553':true},{'AA7365':false}];
变量a=u0.filter(0.map)帐户、函数(项){
返回findKey(项目);
}),未定义);
控制台日志(a)

您可以使用名为Lodash的库。这是一个实用程序库,它提供了许多函数来简化这样的任务。虽然这可以使用纯JS实现,但考虑到它在其他场景中的可用性,我将使用这个库

您可以使用以下选项:

var账户=[{'AA764':true},{'AA324':true},{'AA234':false},{'AA553':true},{'AA7365':false}];
变量a=u0.filter(0.map)帐户、函数(项){
返回findKey(项目);
}),未定义);
控制台日志(a)

如果你想去图书馆,非常有用这里有一个

这样做

angular.module('app',[])
.controller('Ctrl',函数($scope){
$scope.accounts={AA324:false,AA234:false,AA553:false,AA764:true};
$scope.showBeforeSendingRestAPI=函数(){
var-res=[];
对于(var i在$scope.accounts中){
如果($scope.accounts[i])
res.push(i);
} 
返回res;
} 
});

{{account}}
帐户:{{showBeforeSendingRestAPI()}}


如果你想去图书馆,非常有用这里有一个

这样做

angular.module('app',[])
.controller('Ctrl',函数($scope){
$scope.accounts={AA324:false,AA234:false,AA553:false,AA764:true};
$scope.showBeforeSendingRestAPI=函数(){
var-res=[];
对于(var i在$scope.accounts中){
如果($scope.accounts[i])
res.push(i);
} 
返回res;
} 
});

{{account}}
帐户:{{showBeforeSendingRestAPI()}}


我认为这可能会帮助您:

var accounts = [{'AA764':true},{ 'AA324': true},{ 'AA234': false},{ 'AA553': true}, {'AA7365': false}];

// Get selected objects
function getSelected(accounts){

    var ans = [];

    // Looping through array
    for(var i = 0; i < accounts.length; i++){

        var item = accounts[i];

        // Looping over object dynamic property
        for(var prop in item){
            if(item.hasOwnProperty(prop)){

                // if property is true then add it to the answer array
                if(item[prop] === true){
                    // Add item to the answer array
                    ans.push(item);
                }
            }
        }            
    }

    return ans;
}

console.log(getSelected(accounts)); // Here you may see the answer
var账户=[{'AA764':true},{'AA324':true},{'AA234':false},{'AA553':true},{'AA7365':false}];
//获取选定对象
功能getSelected(帐户){
var ans=[];
//循环通过数组
对于(变量i=0;i

如上所述,这是在对象数组中循环,然后在对象属性(仅一个)中循环,并检查该属性是否设置为true,然后将其添加到应答数组中。

我认为这可能会帮助您:

var accounts = [{'AA764':true},{ 'AA324': true},{ 'AA234': false},{ 'AA553': true}, {'AA7365': false}];

// Get selected objects
function getSelected(accounts){

    var ans = [];

    // Looping through array
    for(var i = 0; i < accounts.length; i++){

        var item = accounts[i];

        // Looping over object dynamic property
        for(var prop in item){
            if(item.hasOwnProperty(prop)){

                // if property is true then add it to the answer array
                if(item[prop] === true){
                    // Add item to the answer array
                    ans.push(item);
                }
            }
        }            
    }

    return ans;
}

console.log(getSelected(accounts)); // Here you may see the answer
var账户=[{'AA764':true},{'AA324':true},{'AA234':false},{'AA553':true},{'AA7365':false}];
//获取选定对象
功能getSelected(帐户){
var ans=[];
//循环通过数组
对于(变量i=0;i

如上所述,这是在对象数组中循环,然后在对象属性(仅一个)中循环,并检查该属性是否设置为true,然后将其添加到应答数组中。

如果您不介意使用库,则适用于此:

var账户=[{'AA764':true},{'AA324':true},{'AA234':false},{'AA553':true},{'AA7365':false}];
var trueAccounts=$.map(帐户、函数(项){
var key=Object.key(项)[0];
如果(项目[关键])
返回键;
其他的
返回null;
});
控制台日志(TrueCounts)

如果您不介意使用库,那么它很适合:

var账户=[{'AA764':true},{'AA324':true},{'AA234':false},{'AA553':true},{'AA7365':false}];
var trueAccounts=$.map(帐户、函数(项){
var key=Object.key(项)[0];
如果(项目[关键])
返回键;
其他的
返回null;
});
控制台日志(TrueCounts)

这是一个简单而快速的解决方案:

//输入值
变量帐户=[{AA764':true},{AA324':true},{AA234':false},{AA553':true},{AA7365':false}];
//结果
var accountsResult=[];
//循环遍历数组项
对于(变量i=0;ivar accounts = [{'AA764':true}, {'AA324': true}, {'AA234': false}, {'AA553': true}, {'AA7365': false}];
_.compact(accounts.map(transform));

function transform(item) {
  var prop = Object.keys(item)[0];
  return item[prop] ? prop : false;
}