试图获取其集合数组包含 'random' 的对象的名称

Trying to get the name of the object whose collection array contains 'random'

我正在尝试获取其集合数组包含单词 '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"]
  }

]}

您可以简单地:

  1. Array.prototype.forEach()
  2. 遍历 elements
  3. 查找包含 "random" 且 Array.prototype.includes()
  4. 的实例
  5. 使用 Array.prototype.push()
  6. 将找到的名称添加到结果数组

见下文:

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' ]

试试这个:

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

我已经试过这个问题并且能够得到在集合数组中具有 'random' 的名字。

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

如果符合您的目的,请更新。