【问题标题】:why am i getting this error in my function when i try to update an object为什么当我尝试更新对象时在我的函数中出现此错误
【发布时间】:2021-10-05 07:02:18
【问题描述】:

我对这个功能有疑问:
arrayCheck,完整数组:

[
    {
        "id1": {
            "var_1": "off",
            "val_1": "100"
        },
        "id2": {
            "var_2": "off",
            "val_2": "100"
        }
    }
]

在函数arrayCheck中,indexArr、varName、valUpdate都是ok的。
但返回“arrayCheck.forEach 不是函数”

function updateArray(arrayCheck, indexArr, varName, valUpdate){
    arrayCheck.forEach(obj => {
        Object.entries(obj).forEach(([key, val]) => {
            if (key === indexArr) {
                obj[indexArr][varName] = valUpdate;
            }
        });
    });
    return arrayCheck;
}

谁能帮帮我

【问题讨论】:

  • 所有这些代码都很好——我把它放在一个 sn-p 中,它测试得很好。你能展示一下你是如何调用这个函数的吗?
  • var indexArray = 'id2'; var varName = 'var_2'; var valUpdate = 'new_value'; var myarray = [ { "id1": { "var_1": "off", "val_1": "100" }, "id2": { "var_2": "off", "val_2": "100" } } ]; updateArray(myarray, indexArray, varName, valUpdate);
  • 对不起,我不知道粘贴完美的代码

标签: jquery multidimensional-array


【解决方案1】:

您正在更新函数中的数组,但之后没有将其分配回原始数组,只需设置值,例如

array = updateArray(array, 'id2', 'var_2', 'John');

let array = [
    {
        "id1": {
            "var_1": "off",
            "val_1": "100"
        },
        "id2": {
            "var_2": "off",
            "val_2": "100"
        }
    }
]
 
function updateArray(arrayCheck, indexArr, varName, valUpdate){
    arrayCheck.forEach(obj => {
        Object.entries(obj).forEach(([key, val]) => {
            if (key === indexArr) {
                obj[indexArr][varName] = valUpdate;
            }
        });
    });
    return arrayCheck;
}

array = updateArray(array, 'id2', 'var_2', 'John');
console.log(array)

【讨论】:

  • 我在返回我放置 myArray[0] 的数组的函数代码中找到了错误所在。感谢大家的大力帮助
猜你喜欢
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2021-05-01
  • 2023-03-06
相关资源
最近更新 更多