使用循环forEach Google Apps脚本Javascript在数组中查找值
我有一个对象,看起来像下面的{key:id number}使用循环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
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