javascript - 更新对象多维数组的值

标签 javascript

如果我有数组:

var arr = [
 {
  text: "something",
  child: [
   {
    text: "something child",
    child: [..]
   },..
  ]
 },..
];

当我有索引数组时,除了使用 for() 编辑元素来重建具有更新值的整个数组之外,还有其他更有效的方法吗:

var index = [0, 0];

要执行此操作:

arr[0]["child"][0]["text"] = "updated value";

这只是一个小例子,但 arr 有时是 1 级深度,有时是 12 级,等等。我有时需要更新的值在第一级:

arr[0]["text"] = "updated value"

最佳答案

您可以迭代索引并在最后更新 text 属性。

function update(child, indices, value) {
    indices.reduce((o, i) => o.child[i], { child }).text = value;
}

var array = [{ text: "something", child: [{ text: "something child", child: [] }] }];

update(array, [0, 0], 'foo');

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 更新对象多维数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51830338/

相关文章:

JavaScript Promises mongoose 和 bluebird 缺少捕获和失败

javascript - 语法错误 : Unexpected token => Nodejs

php - Javascript 和 PHP 正则表达式验证

javascript - 替换多行中字符串的所有实例

javascript - 如何在 JavaScript 中将 "range"的值转换为 float ?

<canvas> 上的 JavaScript 文本识别和 OCR

javascript - 将 Select 2 与 ASP.NET MVC 结合使用

javascript - html/javascript 编辑器,在您键入时显示结果

javascript - 了解 Brunch 配置中的不同导出方式

javascript - Backbone 搜索条件