Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用循环forEach Google Apps脚本Javascript在数组中查找值_Javascript_Arrays_Google Apps Script - Fatal编程技术网

使用循环forEach Google Apps脚本Javascript在数组中查找值

使用循环forEach Google Apps脚本Javascript在数组中查找值,javascript,arrays,google-apps-script,Javascript,Arrays,Google Apps Script,我有一个对象,看起来像下面的{key:id number} var obj = { "c4ecb": {id: [3]}, "a4269": {id: [34,36]}, "d76fa": {id: [54,55,60,61]}, "58cb5": {id: [67]} } 如何在下面的数组中循环上述id,并返回标签 var response = { "success

我有一个对象,看起来像下面的{key:id number}

var obj = {
  "c4ecb": {id: [3]},
  "a4269": {id: [34,36]},
  "d76fa": {id: [54,55,60,61]},
  "58cb5": {id: [67]}
}
如何在下面的数组中循环上述
id
,并返回
标签

var response = 
    {
      "success": true,
      "data": [
        {
          "key": "c4ecb",
          "name": "fruits",
          "options": [
            {
              "label": "strawberry",
              "id": 3
            },
            {
              "label": "apple",
              "id": 4
            },
            {
              "label": "pineapple",
              "id": 5
            },
            {
              "label": "Other",
              "id": 31
            }
          ],
        }
      ]
    },
    {
      "success": true,
      "data": [
        {
          "key": "a4269",
          "name": "vegetables",
          "options": [
            {
              "label": "lettuce",
              "id": 34
            },
            {
              "label": "cucumber",
              "id": 35
            },
            {
              "label": "radish",
              "id": 36
            }
          ],
        }
      ]
    },
    {
      "success": true,
      "data": [
        {
          "key": "d76fa",
          "name": "pasta",
          "options": [
            {
              "label": "spaghetti",
              "id": 54
            },
            {
              "label": "rigatoni",
              "id": 55
            },
            {
              "label": "linguine",
              "id": 56
            },
            {
              "label": "lasagna",
              "id": 60
            },
            {
              "label": "fettuccine",
              "id": 61
            }
          ],
        }
      ]
    }
最后,我要做的是查找键并返回一个id值字符串。 例如,输入
c4ecb
和输出
草莓
。输入
a4269
并输出
莴苣、萝卜
。输入
d76fa
并输出“
意大利面、里加通尼、千层面、法图布丁

我认为要将多个标签输出连接到一个字符串中,我可以使用

array.data.vegetables.map(vegetables => vegetables.value).join(', ')].toString();
var fruits = [some code that outputs "strawberry"];
var vegetables = [some code that outputs "lettuce, radish"];
var pasta = [some code that outputs "spaghetti, rigatoni, lasagna, fettuccine"];
所以最后我想要的是

array.data.vegetables.map(vegetables => vegetables.value).join(', ')].toString();
var fruits = [some code that outputs "strawberry"];
var vegetables = [some code that outputs "lettuce, radish"];
var pasta = [some code that outputs "spaghetti, rigatoni, lasagna, fettuccine"];
到目前为止,我所尝试的: 以下循环将仅在需要调用一个
id
时返回
id
:例如,仅在
{id:3}
的情况下返回,但在
{id:34,36}
等情况下返回null(因为它正在
id
中查找'
34,36
,而该情况不存在-我需要单独查找每一个

response.data.forEach(({key, options}) => {
  if (obj[key]) {
    options.forEach(({id, label}) => {
      if (id == obj[key].id) obj[key].label = label;
    });
  }
});
console.log(obj)

过滤
响应
对象以关注与
id
匹配的类别。 映射到
选项
数组并选择出现在
obj[id]
中的项目。 最后,将过滤结果转换为字符串

请参阅下面的
filteredlabelassString()
函数以了解实现

var obj={
“c4ecb”:{“id”:[3]},
“a4269”:{“id”:[34,36]},
“d76fa”:{“id”:[54,55,60,61]},
“58cb5”:{“id”:[67]}
}
var响应=
[{
“成功”:没错,
“数据”:[
{
“密钥”:“c4ecb”,
“名称”:“水果”,
“选择”:[
{
“标签”:“草莓”,
“id”:3
},
{
“标签”:“苹果”,
“id”:4
},
{
“标签”:“菠萝”,
“id”:5
},
{
“标签”:“其他”,
“身份证”:31
}
],
}
]
},
{
“成功”:没错,
“数据”:[
{
“密钥”:“a4269”,
“名称”:“蔬菜”,
“选择”:[
{
“标签”:“生菜”,
“身份证”:34
},
{
“标签”:“黄瓜”,
“身份证”:35
},
{
“标签”:“萝卜”,
“身份证”:36
}
],
}
]
},
{
“成功”:没错,
“数据”:[
{
“键”:“d76fa”,
“名称”:“意大利面”,
“选择”:[
{
“标签”:“意大利面”,
“身份证”:54
},
{
“标签”:“里加托尼”,
“身份证”:55
},
{
“标签”:“linguine”,
“身份证”:56
},
{
“标签”:“千层面”,
“身份证”:60
},
{
“标签”:“fettuccine”,
“身份证”:61
}
],
}
]
}];
函数filteredlabelassString(obj_键,obj,content=response){
//健全性检查:obj必须包含obj_键
if(对象键(obj).包括(对象键)){
返回内容。筛选器((项目)=>{
//使用obj_键的值筛选内容
返回项。数据[0]。key==obj_key;
}).map((项目)=>{
//项:{success:true,数据:[]}
//映射选项数组
返回项.data[0].options.map((opt)=>{
//选项:{id,label}
//如果id在obj对象列表中,则返回标签
if(obj[item.data[0].key].id.includes(opt.id))
返回opt.label;
}).filter((标签)=>{
//过滤掉空项
返回标签!==未定义;
});
}).加入(“,”);
}
//如果obj不包含obj_键,则返回空字符串
返回“”;
}
log(“fruits:+filteredlabelassString”(“c4ecb”,obj));
日志(“蔬菜:+FilteredLabelAssString(“a4269”,obj));

console.log(“意大利面:”+filteredlabelasstring(“d76fa”,obj));
过滤
响应
对象,以关注与
id
匹配的类别。 映射到
选项
数组并选择出现在
obj[id]
中的项目。 最后,将过滤结果转换为字符串

请参阅下面的
filteredlabelassString()
函数以了解实现

var obj={
“c4ecb”:{“id”:[3]},
“a4269”:{“id”:[34,36]},
“d76fa”:{“id”:[54,55,60,61]},
“58cb5”:{“id”:[67]}
}
var响应=
[{
“成功”:没错,
“数据”:[
{
“密钥”:“c4ecb”,
“名称”:“水果”,
“选择”:[
{
“标签”:“草莓”,
“id”:3
},
{
“标签”:“苹果”,
“id”:4
},
{
“标签”:“菠萝”,
“id”:5
},
{
“标签”:“其他”,
“身份证”:31
}
],
}
]
},
{
“成功”:没错,
“数据”:[
{
“密钥”:“a4269”,
“名称”:“蔬菜”,
“选择”:[
{
“标签”:“生菜”,
“身份证”:34
},
{
“标签”:“黄瓜”,
“身份证”:35
},
{
“标签”:“萝卜”,
“身份证”:36
}
],
}
]
},
{
“成功”:没错,
“数据”:[
{
“键”:“d76fa”,
“名称”:“意大利面”,
“选择”:[
{
“标签”:“意大利面”,
“身份证”:54
},
{
“标签”:“里加托尼”,
“身份证”:55