Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果参数中不存在,则推送到对象_Javascript_Arrays_Push - Fatal编程技术网

Javascript 如果参数中不存在,则推送到对象

Javascript 如果参数中不存在,则推送到对象,javascript,arrays,push,Javascript,Arrays,Push,我一直在尝试和搜索如何循环遍历参数,以检查数组中是否已经存在这些参数,我还没有使其完全工作,但当存在重复值时,它根本不会返回 idear是pass multiple values is param,然后循环通过这些VAL,只有在数组中不存在时才推送 var arr = [7,3,1]; function pushNew(obj) { var prams = obj; for(var k = 0; k < obj.length; k++){ for (var i = 0; i &

我一直在尝试和搜索如何循环遍历参数,以检查数组中是否已经存在这些参数,我还没有使其完全工作,但当存在重复值时,它根本不会返回

idear是pass multiple values is param,然后循环通过这些VAL,只有在数组中不存在时才推送

var arr = [7,3,1];

function pushNew(obj) {
var prams = obj;

 for(var k = 0; k < obj.length; k++){

  for (var i = 0; i < arr.length; i++) {
    if (arr[i] == prams[k]) {
     return;
   }
 }
  array.push(prams[k]);
}
// console.info(arr);

}


  pushNew([2,7,4]);
var-arr=[7,3,1];
新功能(obj){
var-prams=obj;
对于(变量k=0;k
您可以使用
indexOf
验证数组中是否存在元素
forEach
是另一种类似循环的数组方法

var arr = [7,3,1];

function pushNew(obj) {
//var prams = obj;
  obj.forEach(function(item){   // iterate through each element
   if(arr.indexOf(item) == -1){ //indexOf return -1 is element is not present in an array
     arr.push(item)
     }
  })

console.log(arr);
}
pushNew([2,7,4]);

工作

您可以使用
indexOf
验证数组中是否存在元素
forEach
是另一种类似循环的数组方法

var arr = [7,3,1];

function pushNew(obj) {
//var prams = obj;
  obj.forEach(function(item){   // iterate through each element
   if(arr.indexOf(item) == -1){ //indexOf return -1 is element is not present in an array
     arr.push(item)
     }
  })

console.log(arr);
}
pushNew([2,7,4]);
工作

var arr=[7,3,1];
新功能(obj){
对于(变量k=0;k
var-arr=[7,3,1];
新功能(obj){
对于(变量k=0;k
获取所有唯一值的一种简短而现代的方法是使用。
Set
是一种类似数组的结构,它只保存唯一的值<代码>数组。从
将类似数组的结构转换为实际数组

在您的情况下,您可以将两个数组合并,将它们传递到
Set
以删除重复的数组,然后使用
Array.from
将其转换回常规数组

var arr1=[1,2,3,4,5];
var arr2=[3,4,5,6,7];
var result=Array.from(新集合(arr1.concat(arr2));

document.write(JSON.stringify(result))获取所有唯一值的一种简短且更现代的方法是使用。
Set
是一种类似数组的结构,它只保存唯一的值<代码>数组。从
将类似数组的结构转换为实际数组

在您的情况下,您可以将两个数组合并,将它们传递到
Set
以删除重复的数组,然后使用
Array.from
将其转换回常规数组

var arr1=[1,2,3,4,5];
var arr2=[3,4,5,6,7];
var result=Array.from(新集合(arr1.concat(arr2));

document.write(JSON.stringify(result))您可以使用lodash的u.union函数

_.union([2,1],[4,2],[1,2]);
// → [2,1,4]

您可以使用lodash的u.union函数

_.union([2,1],[4,2],[1,2]);
// → [2,1,4]

实际上,您现有的代码几乎可以正常工作

如果在内部循环中找到匹配项,可以设置一个标志,并且应该使用break来转义循环,而不是return。如果没有找到匹配项,则在内部循环后使用push。此外,不需要obj和PRAM(我已将其重命名为params),因此:

var-arr=[7,3,1];
函数pushNew(参数){
var发现;

对于(var k=0;k实际上,您现有的代码几乎可以工作

如果在内部循环中找到匹配项,则可以设置一个标志,而不是使用返回来转义循环。如果未找到匹配项,则在内部循环后使用push。此外,不需要同时使用obj和PRAM(我已将其重命名为params),因此:

var-arr=[7,3,1];
函数pushNew(参数){
var发现;

对于(var k=0;k不在IE8或更低版本中工作;k不在IE8或更低版本中工作)学习一些新的东西。这是更好的方法。谢谢。您是否可以创建JSFIDLE?@user2181397添加了一个片段来回答。@user2181397这取决于您的“更好”标准。如果您想提高效率,那么第一次创建arr属性的索引可能会更快,之后只需使用in运算符。学到了一些新东西。这是更好的方法。谢谢。您是否可以创建JSFIDLE?@user2181397添加了一段代码来回答。@user2181397这取决于您的“更好”标准。如果您希望高效,那么第一次创建arr属性的索引可能会更快,之后只需使用in运算符即可。