Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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
Javascript 使用Object.entries循环对象_Javascript_Vue.js_Vuetify.js - Fatal编程技术网

Javascript 使用Object.entries循环对象

Javascript 使用Object.entries循环对象,javascript,vue.js,vuetify.js,Javascript,Vue.js,Vuetify.js,我有一个comobox组件来显示API请求中的标记。组件以以下格式接收标记作为道具: "tags": [ { "name": "Rejected" }, { "name": "Accepted" } ] } 我试图获取值name,并将其设置为v-model,以显示保存在DB中的标记,并在用户需要更新时保留新标记。以下是框代码: 没有与“{{search}}匹配的结果。按enter键创建一个新的

我有一个comobox组件来显示API请求中的标记。组件以以下格式接收标记作为道具:

"tags": [ { "name": "Rejected" }, { "name": "Accepted" } ] }
我试图获取值
name
,并将其设置为
v-model
,以显示保存在DB中的标记,并在用户需要更新时保留新标记。以下是框代码:


没有与“{{search}}匹配的结果。按enter键创建一个新的
道具

计算

computed: {
  model() {
   return Object.entries(this.value.tags).forEach(([key,value]) => {
     return this.model = value
   })
  }
},
当我尝试使用
Object.entries
获取值时,问题是:

TypeError:无法将未定义或null转换为对象

错误
无法将undefined或null转换为object
错误表明
此.value.tags在计算时尚未定义。在提供
值之前,计算的道具在初始化时运行。一种解决方案是在包含初始
标记的prop声明中指定默认值:

导出默认值{
道具:{
价值:{
默认值:()=>({tags:[]})
}
}
}
标记中提取值
如果我理解正确,您正在尝试将
tags[]
中的
name
值映射到数组中。您可以通过以下方式执行此操作:

导出默认值{
计算:{
模型(){
//从`tags[]中的每个对象获取`name`属性`
返回此.value.tags.map(({name})=>name)
}
}
}
绑定到计算属性 我注意到您正在将
模型
计算属性绑定到
中,但是
v-model
需要可写属性,而
模型
不需要。您应该会在开发模式中看到一个控制台警告

我认为
模型
应该是
项目
。用户选择的值将存储在
v-model
中,因此这应该是组件的
数据()中声明的某些属性:


导出默认值{
数据(){
返回{
selectedItems:[]
}
},
计算:{
模型(){/*…*/}
}
}

forEach
中的return语句无效
tags
包含一个数组,因此
Object.entries()
将产生意外结果。不管这些,显然,
这个.value.tags
未定义的
空的
。在控制台中键入此项并观察其工作情况:
Object.entries({name:'test',number:42})
那么如何对未定义或空类型进行forEach?嗯……您不能
forEach()
是JavaScript中数组对象(以及其他类似数组的对象)的方法。这意味着您需要从有效的数组对象调用它。空对象仍然是对象,因此
[].forEach(console.log)
可以工作,但由于没有可迭代的内容,所以什么都不做。你是说这个问题没有解决方案吗?
computed: {
  model() {
   return Object.entries(this.value.tags).forEach(([key,value]) => {
     return this.model = value
   })
  }
},