我是javascript
的初学者。我想使用filter
来挤压这段代码。我想创建一个对象,一些索引添加一个属性,另一个索引分配不同的属性。
var nodeAttribute=new Object();
var minorityNodes=[ 22, 1, 2, 10, 14, 23, 25, 4, 15 ];
var N=30;
for (var i=0; i<N; i++){
if (minorityNodes.indexOf(i) >= 0){
nodeAttribute[i]='minority';
}else{
nodeAttribute[i]='majority';
}
}
应该怎么做?
更新
nodeAttribute
{ '0': 'majority',
'1': 'minority',
'2': 'minority',
'3': 'majority',
'4': 'minority',
'5': 'majority',
'6': 'majority',
'7': 'majority',
'8': 'majority',
'9': 'majority',
'10': 'minority',
'11': 'majority',
'12': 'majority',
'13': 'majority',
'14': 'minority',
'15': 'minority',
'16': 'majority',
'17': 'majority',
'18': 'majority',
'19': 'majority',
'20': 'majority',
'21': 'majority',
'22': 'minority',
'23': 'minority',
'24': 'majority',
'25': 'minority',
'26': 'majority',
'27': 'majority',
'28': 'majority',
'29': 'majority' }
答案 0 :(得分:0)
我不确定filter
如何帮助这种情况(或表现),因为它会迭代一个集合并返回一个子集。
如果你的目标是现代浏览器,你可以使用一套更快的查找(对不起,如果语法错误,我在移动设备上):
var nodeAttribute={};
var minorityNodes=new Set([22, 1, 2, 10, 14, 23, 25, 4, 15 ]);
var N=30;
for (var i=0; i<N; i++){
if (minorityNodes.has(i)) {
nodeAttribute[i]='minority';
}else{
nodeAttribute[i]='majority';
}
}
如果您不能使用集合,请使用对象:
var minorityNodes = {
22: true,
1: true,
// etc
};
检查存在:
if (minorityNodes[i]) ...