javascript - 为什么对象属性在循环中设置不正确?
问题描述
我正在遍历一个数组并为每个元素 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'的属性设置为未定义”。我确实搜索了类似的问题和错误,但没有在对象的上下文中找到答案。希望能深入了解这个特定错误和/或我的代码哪里出错了。
解决方案
您试图检查空对象中的属性。 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)
推荐阅读
- puppeteer - 是否可以使用/在其他工具(如 playright 或 puppeteer)中执行夜间测试测试?
- html - 如何仅使用 HTML/CSS 调整导航栏的大小?
- firebase - W/System (10375):忽略标头 X-Firebase-Locale,因为它的值为 null
- javascript - 如何清除 ReactJS 中的受控输入?
- css - ReactDOM.createPortal() 在 next.js-typescript 中创建额外的空白 div
- typescript - 我的返回类型是对象数组的形式,但我无法映射数组以获取值
- rust - 解决 Rust 字符串格式化程序忽略某些 unicode 字符串的正确字符串长度
- tinybutstrong - 子块用opentbs创建xlsx?
- python - 在 Etsy 上找不到合适的网页抓取类
- json - 使用 JQ 中更高级别对象的值更新深度嵌套的字段