Необходимо выбрать свойство на основе итерации по массиву относительно массива объектов. - PullRequest
1 голос
/ 04 июня 2019

У меня есть массив объектов в следующем формате. Каждый объект имеет несколько свойств, а также массив. Я должен получить свойство, если ключ присутствует в массиве.

Рассмотрим приведенный ниже объект: когда я даю ключ как 7, он должен возвращать мне 'xyz'. Если ключ равен 3, он должен дать мне 'abc'

[
  {
    val : 'abc',
    arr : [1,2,3,4]
  },

  {
    val: 'xyz',
    arr : [7,8,9]
  }
]


Ответы [ 3 ]

3 голосов
/ 04 июня 2019

Вы можете использовать find() и includes().Используйте find из основного массива и проверьте, является ли arr этого объекта includes() данным ключом.вернуть свойство val найденного объекта.

const arr = [
  {
    val : 'abc',
    arr : [1,2,3,4]
  },

  {
    val: 'xyz',
    arr : [7,8,9]
  }
]

const getVal = (arr,key) => (arr.find(x => x.arr.includes(key)) || {}).val;

console.log(getVal(arr,3))
console.log(getVal(arr,7))
1 голос
/ 04 июня 2019

Вы можете использовать Array.filter () , чтобы отфильтровать объект, который удовлетворяет условию, согласно которому элемент (7) существует в массиве. В функции обратного вызова для Array.some() вы можете использовать Array.include () , чтобы проверить, существует ли элемент (7) в самом свойстве arr:

const data = [
  {
    val : 'abc',
    arr : [1,2,3,4]
  },

  {
    val: 'xyz',
    arr : [7,8,9]
  }
]

const res = data.filter(obj => obj.arr.includes(7))[0].val;
console.log(res);
0 голосов
/ 04 июня 2019

Вы можете попробовать это тоже.

var x = [{
        val: 'abc',
        arr: [1, 2, 3, 4]
    },

    {
        val: 'xyz',
        arr: [7, 8, 9]
    }
];
var test = function(data, key) {
    for (let i of x) {
        if (i.arr.indexOf(key) >= 0)
            return i.val;
    }
}

// example

console.log(test(x,9));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...