gpt4 book ai didi

javascript - 如何将链式属性从字符串转换为 javascript 中的变量

转载 作者:行者123 更新时间:2023-11-30 17:02:41 24 4
gpt4 key购买 nike

我有这个存储在字符串中的变量

  var employee  = {
name: 'person',
job: {
post: 'developer',
since: 2010,
desk: {
number: '1',
}
}
};

如何从字符串中获取钥匙串(keychain)值,例如

  var variable = "job.desk.number";
console.log(variable);
//this should return 1

更新 3!

@T.J.克劳德的答案其实是最好的答案。

他的功能快速而整洁。 :) 快乐!

最佳答案

拆分字符串,这样你就有了一个键数组,然后循环遍历它们,依次从对象中获取每个键,记住你从对象中得到的最后一个东西:

var value = variable.split('.').reduce(function(prev, key) {
return prev[key];
}, employee);
snippet.log(value);

例子:

var employee  = {
name: 'person',
job: {
post: 'developer',
since: 2010,
desk: {
number: '1',
}
}
};

var variable = "job.desk.number";
var value = variable.split('.').reduce(function(prev, key) {
return prev[key];
}, employee);
snippet.log(value);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

请注意,Array#reduce 是 ES5 的东西,所以它存在于所有现代浏览器中,但不是一些较旧的浏览器。不过,它可以填充/填充。或者,如果您只是喜欢使用 for 循环:

var keys = variable.split('.');
var value = employee;
var index;
for (index = 0; index < keys.length; ++index) {
value = value[keys[index]];
}
snippet.log(value);

例子:

var employee  = {
name: 'person',
job: {
post: 'developer',
since: 2010,
desk: {
number: '1',
}
}
};

var variable = "job.desk.number";
var keys = variable.split('.');
var value = employee;
var index;
for (index = 0; index < keys.length; ++index) {
value = value[keys[index]];
}
snippet.log(value);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript - 如何将链式属性从字符串转换为 javascript 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28557676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com