gpt4 book ai didi

javascript - 使用变量来引用对象属性?

转载 作者:行者123 更新时间:2023-12-03 11:12:14 26 4
gpt4 key购买 nike

我有一个带有一堆键和值的对象:(为了便于阅读,我已将其减少为一个值)

var linksarray = {
getting_Started : "Getting Started"
};

目的是浏览我页面上的一堆链接,操作 href 属性并根据最终结果(即 getting_Started)使用它作为从对象获取值“Getting Started”的键。

可视化:

这里是代码,正在操作的值的注释:

var link = jQuery(this).attr('href');       //link = ../getting_Started.htm

var res = link.split('/');
var lastEl = res.pop(); //link = getting_Started.htm

var testEl = firstEl.split('.');
var testElUse = testEl[0]; //link = getting_Started

testElUse = '\'' + testElUse + '\''; //link = 'getting_Started'

这一切都按预期工作,我得到了我正在寻找的正确字符串。

从现在开始,我使用了在 Google 上找到的许多不同的解决方案,但没有一个有效。我在这上面浪费了一天半的时间。这是我希望能起作用的两个解决方案...但没有。

解决方案1:

var stringJson = JSON.stringify(linksarray);

var obj=JSON.parse(stringJson) ;
alert(obj[testElUse]); //this results in 'undefined'

解决方案2:

alert(linksarray[testElUse]);          //this results in 'undefined'

我知道有点和 block 注释,但据我了解,如果您想根据此链接动态引用属性,则 block 是可行的方法:Dynamically access object property using variable

无论我做什么,我都会返回 undefined...而不是我正在寻找的“入门”。

请帮忙:)

最佳答案

首先,使用 regExp 从您要查找的 href 属性中提取变量可能会更容易、更清晰。为您节省大量的弹出和切片操作(: http://www.regexr.com/是一个调整和测试 regExp 的好网站。使用正则表达式,它看起来像这样:

var link = $('a');
var href = link.attr('href');

console.log(href); // http:www.google.com/getting_started.html

// .*/ - captures everything up to the last '/'
// (.*) - captures everything in between the previous selection and
// the next and puts in into a group.
// \.(html|htm) - captures .html or .htm
var regExp = /.*\/(.*)\.(html|htm)/g;

// replace the entire url with the value found in the first group selection.
var testElUse = href.replace(regExp, '$1');

console.log(testElUse); // getting_started

然后您应该能够使用括号符号从对象中提取值:

// retrieve the value from the linksArray
console.log( linksArray[testElUse] ); // Getting started

只需确保名称匹配(:希望这有帮助。

关于javascript - 使用变量来引用对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27523127/

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