如何在javascript/angular中迭代特定索引和检查值
我的angular应用程序中有以下型号:如何在javascript/angular中迭代特定索引和检查值,javascript,angularjs,Javascript,Angularjs,我的angular应用程序中有以下型号: members = [ { id: 'member1', name: '', instrument1: '', instrument2: '' },... ] 我想生成一个过滤后的数组,可以通过ng repeat进行访问。筛选后的数组将包含值不等于“”或n
members = [
{
id: 'member1',
name: '',
instrument1: '',
instrument2: ''
},...
]
我想生成一个过滤后的数组,可以通过ng repeat进行访问。筛选后的数组将包含值不等于“”或null的所有工具的索引。实际上,数组的内容对于直接项并不重要,它可能只是[0,1,2…] 我建议您过滤成员并获取长度:
function hasAnInstrument(member) {
// return true if you want to count the member, for instance:
return !!member.instrument1 || !!member.instrument2;
}
var counter = members.filter(hasAnInstrument).length;
我建议您筛选成员并获取长度:
function hasAnInstrument(member) {
// return true if you want to count the member, for instance:
return !!member.instrument1 || !!member.instrument2;
}
var counter = members.filter(hasAnInstrument).length;
编辑的答案
var a = [
{instrument1: true, instrument2: false},
{instrument1: false, instrument2: false},
{instrument1: true, instrument2: true}
];
var count = a.map(function(m) {
return +!!m.instrument1 + +!!m.instrument2
}).reduce(function(a, b) {
return a + b
}, 0);
console.log(count);
map
将每个元素转换为0、1或2,其中一个属性转换为布尔值,reduce只将各个计数器相加
注释
将!!something
转换为布尔值something
将+something
转换为数字,something
转换为true
,1
转换为false
。很方便0
- 此代码依赖于这样一个事实:当转换为布尔值时,空字符串或
,等于null
。对于模型来说,这是一个非常薄弱的环节,在生产/企业环境中,我建议通过添加一个数据净化步骤来使这一点更加明确false
- 上面的代码非常简洁,几乎让人摸不着头脑。在生产/企业环境中,我建议将其放宽一点,使其更加明确
var a = [
{instrument1: true, instrument2: false},
{instrument1: false, instrument2: false},
{instrument1: true, instrument2: true}
];
var count = a.map(function(m) {
return +!!m.instrument1 + +!!m.instrument2
}).reduce(function(a, b) {
return a + b
}, 0);
console.log(count);
map
将每个元素转换为0、1或2,其中一个属性转换为布尔值,reduce只将各个计数器相加
注释
将!!something
转换为布尔值something
将+something
转换为数字,something
转换为true
,1
转换为false
。很方便0
- 此代码依赖于这样一个事实:当转换为布尔值时,空字符串或
,等于null
。对于模型来说,这是一个非常薄弱的环节,在生产/企业环境中,我建议通过添加一个数据净化步骤来使这一点更加明确false
- 上面的代码非常简洁,几乎让人摸不着头脑。在生产/企业环境中,我建议将其放宽一点,使其更加明确
ng repeat='member。我如何将您的解决方案包装到该函数中?谢谢,这是我第一次进入angular和js领域。我感谢你的时间和意愿来解释。这实际上非常接近,但我需要返回两个“真”的如果!!member.1&!!成员2…即。我需要数一数我能跟上的所有仪器。我只是不知道如何把它放在我的控制器里。现在在我的模板中,我在getMembersWithInstruments(members)
中有一个ng repeat='member。我如何将您的解决方案包装到该函数中?谢谢,这是我第一次进入angular和js领域。感谢您花时间和意愿解释。您应该编辑您的答案,以提供更多信息和准确信息,以便获得可在ng repeat
中使用的过滤元素数组。现在还不清楚您是要计算符合精确条件的项目,还是要将其放入单独的数组中……您应该编辑答案,以提供更多信息和精确信息,以便获得可在ng repeat