通过点表示的字符串键遍历对象

吕根

我不确定为什么这样做。它似乎可以达到我的期望,但是我不确定它是如何工作的。有人可以解释如何在console.log中找到密钥并返回重新映射吗?

const data = {
  title: "hello world",
  user: {
    title: 'ruegen',
    app: {
      title: 'my app'
    }
  }

}

const map = {
  'user.title': 'Ruegen',
  'title': 'Title',
  'user.app.title': 'App'
}

Object.keys(map).forEach(function(key) {
  const row = ref(data, key)
  const header = map[key]
  console.log(header, row)
})


function ref(row, key) {
  var headers = key.split(".")
  var row = JSON.parse(JSON.stringify(row))

  headers.forEach(function(header) {
    // console.log('>>', header)
    try {
      row = row[header]
    } catch (err) {
      return
    }
  })
  return row;
}

卡米尔(KamilKiełczewski)

主要工作在ref功能上完成您可以删除var row = JSON.parse(JSON.stringify(row)),它将仍然有效。在该函数中,您将键字符串拆分为数组headers(由key.split(".")),然后在(标题元素的)forEach循环中,通过“ row = row [header]”进入对象行-因此,在每次迭代时,都用键“标头”。一切都在try-catch块中完成,因此如果您输入的密钥无效,则不返回任何内容。

Object.keys(map).forEach您运行ref具有相同数据结构,但是从地图对象不同的密钥。

ref可以简化为

function ref(row, key) {
  key.split(".").forEach(k => row ? row=row[k] : undefined)
  return row;
}

在这里,我们使用三元运算符通过简单的null检查(这会提高无效密钥的代码速度)来替换try-catch块箭头功能

const data = {
  title: "hello world",
  user: {
    title: 'ruegen',
    app: {
      title: 'my app'
    }
  }

}

const map = {
  'user.title': 'Ruegen',
  'title': 'Title',
  'user.app.title': 'App'
}

Object.keys(map).forEach(function(key) {
  const row = ref(data, key)
  const header = map[key]
  console.log(header, row)
})


function ref(row, key) {
  key.split(".").forEach(k => row ? row=row[k] : undefined)
  return row;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当键不是字符串时,如何遍历对象的键?

通过对象键构建字符串

通过点属性访问器获取对象键作为字符串

遍历javascript对象可将键转换为字符串

通过附加字符串来更新对象键的计数

通过字符串键/路径生成嵌套对象结构

通过字符串键将对象存储在字典中

通过键字符串从对象数组中删除属性

检查字符串的对象/点表示法

循环遍历对象键并将字符串附加到键

遍历每个键具有多个值的字符串对象的映射

Perl,遍历json字符串,在一个变量中获取键/值对象

当其键与特定字符串匹配时,遍历Javascript对象的值

遍历对象文字并替换字符串

遍历嵌套对象以形成字符串

通过点lua分割字符串

通过反射检索的对象转换为字符串(如何遍历多个类类型?)

如何在Jquery中通过多个对象遍历json字符串

将点表示法字符串转换为对象并查找参考对象

点表示法字符串操作

对象键的字符串模板

如何遍历Java字符串的unicode代码点?

如何通过字符串键获取嵌套JavaScript对象属性的值

TypeScript:通过使用接口使用特定字符串限制对象的键

如何遍历包含数组、对象和字符串的对象

以点表示法评估字符串以从视图中的对象获取相应的值

使用点表示法中的字符串访问 json 对象

将点表示法的JavaScript字符串转换为对象引用

如何从点表示法字符串动态创建多级对象