javascript - 从带有字符串的关联数组中获取值

标签 javascript

我有一个从具有不同响应结构的服务器获得的 json 响应。

使用另一个值“数据”来存储链接:

另一个则没有(“image”是链接):

我想知道是否有一种方法可以使用可重用的方法从关联数组中获取“data.link”,其中 linkVariableName 是关联数组的键。

function addLink(responseText, successVariableName, isError, linkVariableName)
{
    var jsonResponse = JSON.parse(responseText);

    var state;
    if (isError)
        state = !jsonResponse[successVariableName];
    else
        state = jsonResponse[successVariableName];

    if (state) {
        var link = jsonResponse[linkVariableName];
        insertAtCursor(textArea, '[img]' + link + '[/img]\r\n');
    } else
        console.log('Error: ' + responseText);
}

所以我可以使用其中一个

addLink(response.responseText, 'success', false, 'data.link');

addLink(response.responseText, 'error', true, 'image');

最佳答案

是的,您可以,如下所述:Accessing nested JavaScript objects with string key

但是,在我看来,该函数尝试做的事情太多了。为什么需要解析 JSON 并提取值?您可以直接将值传递给它:

function addLink(link) {
  insertAtCursor(textArea, '[img]' + link + '[/img]\r\n');
}

并将其他逻辑移至处理响应的位置:

var isError = ...;
var response = JSON.parse(responseText);

if (isError && !response.error) {
  addLink(response.image);
} else if(!isError && response.success) {
  addLink(response.data.link);
} else {
  console.log('Error: ' + responseText);
}

关于javascript - 从带有字符串的关联数组中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767282/

相关文章:

Javascript 更改 src 在一个页面上有效,但在另一页上无效

javascript - 将输入控件绑定(bind)到 FormArray 中的不同元素

javascript - 我的脚本使浏览器崩溃

javascript - 在 iframe 中插入 javascript 文件

javascript - 使用可拖动的 jQuery 函数

javascript - 如何在node.js中访问子文件中的父模块数据

javascript - 未处理的拒绝错误 : Script error for "nprogress", 需要:资源/元素/加载指示器

javascript - 无限数量参数的幂乘法。我该如何重构?

javascript - 如何将 javascript 对象链接到它的 angularsjs 资源

Javascript,针对父元素 : Why is the event not triggered?