如果在javascript .some()函数中未满足条件,则返回值

时间:2016-11-10 11:48:27

标签: javascript function

给定一组数字,我希望使用javascript的.some()方法来查找第一对镜像图像并返回该对。

e.g。 [454,86,57,75,16,88])应该返回[57,55]。如果没有相互镜像的数字,我想返回[-1,-1]。我设法达到如果有镜像数字,返回数字的点。但是,我不能让它返回[-1,-1]。我哪里出错了?

var a=0
var b=0
arr=[13,15,19,32,49,61,73]

arr.some((x,i)=>{
    a=arr[i]
    b=arr[i+1]
    b= switchIt(b)
     if(a!==b){     //what if there are no mirror image numbers found?
       a = -1
       b = -1
    }else{
       return a==b
    }      
})

function switchIt(n){
    n= n.toString()
    n= n.split("")
    var [x,y,z]=[n[0],n[1],n[2]]
    n= [z,y,x]
    n= n.join("")
    n= parseInt(n)
  return n
}


console.log([a,switchIt(b)])

4 个答案:

答案 0 :(得分:5)

  

给定一组数字,我希望使用javascript的.some()方法找到第一对镜像图像并返回该对。

这不是some所做的。 some返回一个布尔值:谓词函数返回一个truthy值(所以some返回true),或者它从未返回真值(所以some返回{{1 }})。

虽然你可以使用false来实现你想要的,但你真正想要的是some(在ES2015中添加,但完全可调和/可填充)。这是一个更简单的例子:

find

为了完整起见,可以var a = [ {id: 1, value: "one"}, {id: 2, value: "two"}, {id: 3, value: "three"}, {id: 4, value: "four"}, {id: 5, value: "five"} ]; var entry = a.find(function(e) { return e.id === 3; }); console.log(entry);一起使用find谓词关闭的变量:

some

...但我不建议这样做。这正是var a = [ {id: 1, value: "one"}, {id: 2, value: "two"}, {id: 3, value: "three"}, {id: 4, value: "four"}, {id: 5, value: "five"} ]; var entry; a.some(function(e) { if (e.id === 3) { entry = e; return true; } }); console.log(entry);的设计目标。

答案 1 :(得分:2)

如果回调函数为任何数组元素返回一个truthy值,则

Array.some返回一个布尔值true;否则,false

如果要返回该值,可以改用reduce,但会迭代到最后

var result = arr.reduce(function(a,b,i) {
    if (a[0]!==-1) return a;
    if ( (""+b).split("").reverse().join("") == arr[i+1] ) return [b, arr[i+1]];
    return a;
},[-1,-1]);

答案 2 :(得分:1)

一个简单的例子,您的代码将按预期工作:

arr.some((x,i)=>{
    var end = i >= (arr.length - 1);
    a=arr[i]
    if (!end) {
        b=arr[i+1]
        b = switchIt(b)
    }
    if(a!==b || end){ //note the OR with end variable here
       a = -1
       b = -1
    }else{
       return a==b
    }      
})

当一些函数找到数组的结尾时,ajust包含测试

答案 3 :(得分:1)

我不建议在这种情况下使用if (seat1 == "Reserved") { ImageButton1.ImageUrl = "seatreserved.png"; ImageButton1.Enabled = false; } array.some的目的是检查条件是否满足。如果要获取值,则应使用其他函数。我建议.some



array.reduce