是否可以在具有两个属性的数组中搜索对象

时间:2018-12-29 17:19:53

标签: javascript arrays

我有以下代码

const xPosition = coordinates.find(position => position.x === avoidObstacleX);

这将向我返回坐标{x:26,y:10},这没错,但是我还有另一个坐标是{x:26,y:11}我想输出的坐标有什么方法可以将两个参数传递给find方法?

3 个答案:

答案 0 :(得分:2)

您可以使用两个变量(而不是find方法本身的参数),就像您已经使用过一个一样:

function findObstacle(coordinates, avoidObstacleX, avoidObstacleY) {
    return coordinates.find(position => position.x === avoidObstacleX 
                                     && position.y === avoidObstacleY);
}

const xyPosition = findObstacle(coordinates, avoidObstacleX, avoidObstacleY);

但是从另一个答案中,我现在了解到您的问题有两种解释...

答案 1 :(得分:1)

find仅检索单个元素,您需要使用filter方法:

const coordinates = [ {x: 26, y: 10}, {x: 26, y: 11}, {x: 12, y: 34} ]
const avoidObstacleX = 26;

// returns [ {x: 26, y: 10}, {x: 26, y: 11} ]
const xPosition = coordinates.filter(position => position.x === avoidObstacleX);

答案 2 :(得分:0)

要传递一个值:

const coordinates= [
  {x: 26, y: 10}, 
  {x: 26, y: 11}, 
  {x: 36, y: 6}, 
  {x: 7,y: 8}
]
const avoidObstacleX=26;
 
let result = coordinates.filter(position=> {
  return position.x === avoidObstacleX  ;
})

console.log(result)

您可以传递两个值:

 const coordinates= [
  {x: 26, y: 11}, 
  {x: 26, y: 11}, 
  {x: 26, y: 11}, 
  {x: 7,y: 8}
]

    function find(avoidObstaclex,avoidObstacley){
    let result= coordinates.filter(position=> {
      return position.x === avoidObstaclex && position.y === avoidObstacley ;
    })

    return result;}
    const avoidObstacleX=26;
    const avoidObstacleY=11;
    console.log(find(avoidObstacleX,avoidObstacleY))