首页 > 解决方案 > 为什么对象属性在循环中设置不正确?

问题描述

我正在遍历一个数组并为每个元素 1)检查它是否是我的对象中的属性,2)如果不是,则将其作为道具添加到 obj 及其索引的 val。代码在这里完整,因为我不确定哪个部分包含错误。

var repeat = function(arr) {

    for(let i=0; i<arr.length; i++){

        const obj = {};

        if (obj.hasOwnProperty(arr[i])) {
            return arr[i]
        } else {
            obj.arr[i] = i;
        }
    }
};

我收到错误“无法将'0'的属性设置为未定义”。我确实搜索了类似的问题和错误,但没有在对象的上下文中找到答案。希望能深入了解这个特定错误和/或我的代码哪里出错了。

标签: javascriptloopsobject

解决方案


您试图检查空对象中的属性。 const obj = {};您还必须将对象传递给函数。将属性添加到对象时,它应该像这样 obj["New Property"] = value. 当我们从对象访问值时,我们不能使用 .(dot) 添加新值。

var repeat = function(arr,obj) {

  var pObj = {}
    for(let i=0; i<arr.length; i++){

      if(!obj.hasOwnProperty(arr[i])){
        pObj[arr[i]] = i
      }

    }

  const a = {...obj, ...pObj};
  return a;

};


var myarr= ["a","b","c","d"];
var myObj = {a:"Property A",b:"Property B"};
this.repeat(myarr,myObj)


推荐阅读