Попытка получить имя объекта, чей коллекционный массив содержит «random» - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь получить имена объекта, в массиве которого содержится слово «random». Пробовал различные json запросы пути, но не смог получить правильный.

{
	"elements": [
        {
			"name": "My first element",
			"language": "French",
			"tags": ["Paris", "baguette", "Eiffel  tower"]
		},

		{
			"name": "randomOne",
			"language": "Gibberish",
			"tags": ["random", "plant, bag"]
		},

        {
			"name": "bliep",
			"language": "English",
			"tags": ["lamp", "table, bed, oven"]
		}

]}

Ответы [ 3 ]

2 голосов
/ 13 февраля 2020

Попробуйте это:

const jsonObj = {
	"elements": [{
			"name": "My first element",
			"language": "French",
			"tags": ["Paris", "baguette", "Eiffel  tower"]
		},

		{
			"name": "randomOne",
			"language": "Gibberish",
			"tags": ["random", "plant, bag"]
		},

		{
			"name": "bliep",
			"language": "English",
			"tags": ["lamp", "table, bed, oven"]
		}

	]
};

let obj = jsonObj.elements.find((obj) => obj.tags.includes('random'));

console.log(obj.name); // randomOne
1 голос
/ 13 февраля 2020

Вы можете просто:

  1. L oop - elements с Array.prototype.forEach()
  2. Найти экземпляры, содержащие "random" с Array.prototype.includes()
  3. Добавьте найденные имена в массив результатов с Array.prototype.push()

См. Ниже:

const jsondata = {
  elements: [{
      name: "My first element",
      language: "French",
      tags: ["Paris", "baguette", "Eiffel tower"]
    },
    {
      name: "randomOne",
      language: "Gibberish",
      tags: ["random", "plant, bag"]
    },
    {
      name: "bliep",
      language: "English",
      tags: ["lamp", "table, bed, oven"]
    }
  ]
};

const result = [];
jsondata.elements.forEach(elem => {
  if (elem.tags.includes("random")) {
    result.push(elem.name);
  }
});

console.log(result); // [ 'randomOne' ]
0 голосов
/ 28 февраля 2020

Я пробовал этот вопрос и смог получить имена, имеющие 'random' в массиве коллекции.

$.elements[?(@.tags.indexOf('random') != -1)].name

Пожалуйста, обновите, если это соответствует вашим целям.

...