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

Oct*_*aLo 2 javascript function

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

例如[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)])
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 6

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

那不是那个some.some返回一个布尔值:谓词函数返回一个真值(所以some返回true),或者它从未返回一个真值(所以some返回false).

虽然您可以使用some您想要的,但您真正想要的是find(在ES2015中添加,但完全可调光/可聚合).这是一个更简单的例子:

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);
Run Code Online (Sandbox Code Playgroud)


只是为了完整性,你可以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);
Run Code Online (Sandbox Code Playgroud)

......但我不建议这样做.这正是find为此而设计的.