Javascript 传播不可复制实例的尝试无效。为了便于iterable,非数组对象必须具有[Symbol.iterator]()方法

Javascript 传播不可复制实例的尝试无效。为了便于iterable,非数组对象必须具有[Symbol.iterator]()方法,javascript,nuxt.js,Javascript,Nuxt.js,在我的nuxtjs项目中,我有两个在数据中定义的对象数组,如下所示: allCampusObj: [{ name: "allCampus", title: "Campus", }], deptSummaryFieldsArr:[ { name: "sisSchoolTitle", title: "School&q

在我的nuxtjs项目中,我有两个在数据中定义的对象数组,如下所示:

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