在 JavaScript 中创建关联数组

发布于 2024-09-10 08:34:43 字数 761 浏览 3 评论 0原文

使用以下代码:

$credits.getCredits = function() {
    return $(this).find( 'tbody' ).children( 'tr' ).map(function(){
        var $name = $(this).children(':first').html();
        var $role = $(this).children(':nth-child(2)').html();

        return { $role: $name };
    }).get();
}

它会查看学分列表的元素,并且应该返回如下所示的列表:

[
     { 'Make-up': 'Bob' },
     { 'Make-up': 'Susan' },
     { 'Photography': 'Charlie' },
     { 'Lighting': 'Mike' },
     { 'Props': 'One-handed Tony' }
]

它最终会输出以下内容:

[
     { '$role': 'Bob' },
     { '$role': 'Susan' },
     { '$role': 'Charlie' },
     { '$role': 'Mike' },
     { '$role': 'One-handed Tony' }
]

如何补救关联数组创建以获得所需的输出?

Using the following code:

$credits.getCredits = function() {
    return $(this).find( 'tbody' ).children( 'tr' ).map(function(){
        var $name = $(this).children(':first').html();
        var $role = $(this).children(':nth-child(2)').html();

        return { $role: $name };
    }).get();
}

Which looks through the elements of a credits list and should return a listing like the following:

[
     { 'Make-up': 'Bob' },
     { 'Make-up': 'Susan' },
     { 'Photography': 'Charlie' },
     { 'Lighting': 'Mike' },
     { 'Props': 'One-handed Tony' }
]

It ends up outputting this instead:

[
     { '$role': 'Bob' },
     { '$role': 'Susan' },
     { '$role': 'Charlie' },
     { '$role': 'Mike' },
     { '$role': 'One-handed Tony' }
]

How do you remedy the associative array creation to get the desired output?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柠檬色的秋千 2024-09-17 08:34:43

分两步创建对象(关联数组):

var obj = {};
obj[$role] = $name;
return obj

每当您使用文字创建对象({foo: bar})时,键也将按字面意思获取,并且不会被求值。

Create the object (associative array) in two steps:

var obj = {};
obj[$role] = $name;
return obj

Whenever you use literals to create an object ({foo: bar}), the key will also be taken literally and will not be evaluated.

尤怨 2024-09-17 08:34:43

如果您想要动态名称,则需要以稍微不同的方式返回它,如下所示:

$credits.getCredits = function() {
  return $(this).find( 'tbody' ).children( 'tr' ).map(function(){
    var $name = $(this).children(':first').html(),
        $role = $(this).children(':nth-child(2)').html(),
        result = {};
    result[$role] = $name;    

    return result;
  }).get();
}

您可以在此处尝试一个示例(检查控制台)。这就是对象字面量语法的工作方式。由于它们是等效的:

object.propertyName
object["propertyName"]

您可以通过相同的路线进行分配。

You need to return it a little differently if you want a dynamic name, like this:

$credits.getCredits = function() {
  return $(this).find( 'tbody' ).children( 'tr' ).map(function(){
    var $name = $(this).children(':first').html(),
        $role = $(this).children(':nth-child(2)').html(),
        result = {};
    result[$role] = $name;    

    return result;
  }).get();
}

You can try an example here (check the console). This is, well, just the way object literal syntax works. Since these are equivalent:

object.propertyName
object["propertyName"]

You can assign via that same route.

睫毛溺水了 2024-09-17 08:34:43

JS 中没有关联数组。只需创建一个新对象并根据需要进行分配,例如:

var $obj = {};
$obj.MakeUp = 'Bob';

There are no associative arrays in JS. Just create a new object and assign like you want, e.g:

var $obj = {};
$obj.MakeUp = 'Bob';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文