Javascript 如果参数中不存在,则推送到对象
我一直在尝试和搜索如何循环遍历参数,以检查数组中是否已经存在这些参数,我还没有使其完全工作,但当存在重复值时,它根本不会返回 idear是pass multiple values is param,然后循环通过这些VAL,只有在数组中不存在时才推送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 &
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;kvar-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运算符即可。