Javascript数组推送

Javascript数组推送,javascript,arrays,Javascript,Arrays,我尝试遍历一个数组,如果内容满足一些基本条件,则将其从该数组推送到另一个数组。非常简单的东西。请帮帮我 获取MongoDB中的DBs列表 >>var dbs = db.getMongo().getDBNames(); >>dbs [ "admin", "newdb", "newdb2", "local", "test" ] 获取数组长度: var arrayLength = dbs.length; 创建空数组 var databases = [] 如果内容不等于“

我尝试遍历一个数组,如果内容满足一些基本条件,则将其从该数组推送到另一个数组。非常简单的东西。请帮帮我

获取MongoDB中的DBs列表

>>var dbs = db.getMongo().getDBNames();

>>dbs
[ "admin", "newdb", "newdb2", "local", "test" ]
获取数组长度:

var arrayLength = dbs.length;
创建空数组

var databases = []
如果内容不等于“admin”、“local”或“test”,则从dbs数组推送到数据库数组内容

for (var i = 0 ; i < arrayLength; i++) { 
  if (!(dbs[i] == "admin") || !(dbs[i] == "local") || !(dbs[i] == "test")) {
    databases.push(dbs[i]);
  }
}

这是怎么回事?只有newdb和newdb2需要在“databases”数组中。

在这种情况下,您应该使用
&&
而不是
|

(!(dbs[i] == "admin") || !(dbs[i] == "local") || !(dbs[i] == "test")) 
按照上面写的方式,“值不是A或不是B或不是C”,这将适用于所有情况。(例如,A不是B。)

你的意思是说“价值不是A,也不是B,也不是C”


在这种情况下,您应该使用
&&
而不是
|

(!(dbs[i] == "admin") || !(dbs[i] == "local") || !(dbs[i] == "test")) 
按照上面写的方式,“值不是A或不是B或不是C”,这将适用于所有情况。(例如,A不是B。)

你的意思是说“价值不是A,也不是B,也不是C”

改用这个:

var dbs=[“admin”、“newdb”、“newdb2”、“local”、“test”]; var arrayLength=dbs.length; var数据库=[]; 对于(var i=0;i请改用此选项:

var dbs=[“admin”、“newdb”、“newdb2”、“local”、“test”]; var arrayLength=dbs.length; var数据库=[]; 对于(var i=0;i简单的东西。:-)

简单的东西。:-)


我没有看到提到它,但我建议查看Array.prototype.filter。这将为您创建第二个数组,并管理对第一个数组的值的迭代。我也会避免大量的条件,只需要依靠Array.prototype.includes为您完成工作

var dbs = ["admin", "newdb", "newdb2", "local", "test"];
var unwantedValues = ["admin", "local", "test"];
var databases = dbs.filter(function(value) {
  return !unwantedValues.includes(value);
});
编辑时,您也可以将其视为创建补码,就像在数学中一样

// Create this as a utility function in your code
// Return a new array object that contains all values from arrayA 
// that are not in arrayB 
function complement(arrayA, arrayB) {
  return arrayA.filter(function(value) {
    return !arrayB.includes(value);
  });
}

// Then call it
var databases = complement(dbs, unwantedValuesArray);

我没有看到提到它,但我建议查看Array.prototype.filter。这将为您创建第二个数组,并管理对第一个数组的值的迭代。我也会避免大量的条件,只需要依靠Array.prototype.includes为您完成工作

var dbs = ["admin", "newdb", "newdb2", "local", "test"];
var unwantedValues = ["admin", "local", "test"];
var databases = dbs.filter(function(value) {
  return !unwantedValues.includes(value);
});
编辑时,您也可以将其视为创建补码,就像在数学中一样

// Create this as a utility function in your code
// Return a new array object that contains all values from arrayA 
// that are not in arrayB 
function complement(arrayA, arrayB) {
  return arrayA.filter(function(value) {
    return !arrayB.includes(value);
  });
}

// Then call it
var databases = complement(dbs, unwantedValuesArray);

你也可以只使用
if(dbs[i]!=“admin”&&dbs[i]!=“local”&&dbs[i]!=“test”)
。你也可以只使用
if(dbs[i]!=“admin”&&dbs[i]!=“local”&&dbs[i]!=“test”)
。如果你是编程新手,正则表达式是不容易的,filter也是如此。^我不同意
filter
。这个词在习惯上就是你正在做的事情,而且非常常用。另外,这个特定的正则表达式是非常清楚的。正确的答案并不在乎OP对编程有多新,如果它是一个好答案的话。我们不能被期望稀释知识,只能尝试在哪里教书possible@Damon+1 for^:-DRegex对于编程来说并不容易,filter也不容易。^我不同意
filter
。这个词在习惯上就是你正在做的事情,而且非常常用。另外,这个特定的正则表达式是非常清楚的。正确的答案并不在乎OP对编程有多新,如果它是一个好答案的话。我们不能被期望稀释知识,只能尝试在哪里教书possible@Damon+1代表^:-d抱歉延迟回复!但是是的,你是对的!很抱歉延迟回复!但是是的,你是对的!