Javascript 传播不可复制实例的尝试无效。为了便于iterable,非数组对象必须具有[Symbol.iterator]()方法
在我的nuxtjs项目中,我有两个在数据中定义的对象数组,如下所示:Javascript 传播不可复制实例的尝试无效。为了便于iterable,非数组对象必须具有[Symbol.iterator]()方法,javascript,nuxt.js,Javascript,Nuxt.js,在我的nuxtjs项目中,我有两个在数据中定义的对象数组,如下所示: allCampusObj: [{ name: "allCampus", title: "Campus", }], deptSummaryFieldsArr:[ { name: "sisSchoolTitle", title: "School&q
allCampusObj: [{
name: "allCampus",
title: "Campus",
}],
deptSummaryFieldsArr:[
{
name: "sisSchoolTitle",
title: "School",
formatter(value) {
return value.length > 3 ? `${value.slice(0, 3)}...` : `${value}`;
}
},
{
name: "sisDeptTitle",
title: "Department",
formatter(value) {
return "";
}
},
{
name: "secAll",
title: "Courses"
},
{
name: "secNSub",
title: "Not Submitted"
},
{
name: "nsp-slot",
title: "% Not Submitted"
},
{
name: "secSub",
title: "Submitted"
},
{
name: "sp-slot",
title: "% Submitted"
}
],
deptSummaryFields: [
...this.allCampusObj,
...this.deptSummaryFieldsArr
]
我得到的错误是:传播不可迭代实例的尝试无效。要使其可编辑,非数组对象必须具有Symbol.iterator方法。即使我在数组上使用了扩展运算符,也不能直接引用中的
此
,除非它位于类似于值的函数中
如中所述,有几种方法可以绕过此限制。下面是许多方法之一。
注意,如注释中所述,函数声明存在语法错误,应将其写成formatter:(value)=>{return”“;}
const obj = {
allCampusObj: [{
name: "allCampus",
title: "Campus",
formatter : (value)=> {
return "";
}
}],
deptSummaryFieldsArr: [
{
name: "sisSchoolTitle",
title: "School",
formatter: (value) => {
return value.length > 3 ? `${value.slice(0, 3)}...` : `${value}`;
}
},
{
name: "sisDeptTitle",
title: "Department",
formatter:(value)=> {
return "";
}
},
{
name: "secAll",
title: "Courses"
},
{
name: "secNSub",
title: "Not Submitted"
},
{
name: "nsp-slot",
title: "% Not Submitted"
},
{
name: "secSub",
title: "Submitted"
},
{
name: "sp-slot",
title: "% Submitted"
}
],
}
const obj2 = {
deptSummaryFields: [
...obj.allCampusObj,
...obj.deptSummaryFieldsArr
]
}
obj.deptSummaryFields = obj2.deptSummaryFields;
console.log(obj);
您是否已尝试从
deptSummaryFieldsArr
变量中删除formatter
函数,然后重试。可能是因为它是一个函数,因此spread运算符无法继承它。@HimanshuSaxena,是的,也尝试过。我的数组仅在数据对象(nuxt js)中定义,所以“这”不会产生任何问题,为什么要为obj2创建对象?为什么不使用数组?@developer它确实会产生问题,这个。allCampusObj
是未定义的
。请阅读相关问题。但是是的,obj2
是不必要的,可以直接创建数组并将其分配给obj.deptSummaryFields
。