首页 > 解决方案 > 如何映射键/值数组而不是对象

问题描述

我需要从某些表单中获取一些值,因此当我需要从表单中调用特定值时,我想调用数组中的特定键。但是Array.prototype.map创建一个索引为 (0, 1, 2) 的对象,然后存储键/值,因此我无法在不知道索引的情况下访问特定值。

我尝试了 array.push() 以及这里的函数,这似乎太多了,因为我知道有一种更简单的方法。

let extraClassArray = licenseClass
    .map( ( i, e ) => {
        if ( '' != $( e ).val() && e.hasAttribute( 'required' ) ) {
            let id = $( e ).data( 'parent' );
            let obj = {};
            switch ( $( e ).val() ) {
                case 'A':
                    obj.A =
                        '1' ===
                        $( '#license-class-' + id )
                            .find( '#license-class-' + id + '-a-value:checked' )
                            .val() ?
                            '1' :
                            '0';
                    break;
                case 'A2':
                    obj.A2 =
                        '1' ===
                        $( '#license-class-' + id )
                            .find( '#license-class-' + id + '-a2-value:checked' )
                            .val() ?
                            '1' :
                            '0';
                    break;
                case 'B':
                    obj.BF17 =
                        '1' ===
                        $( '#license-class-' + id )
                            .find(
                                '#license-class-' + id + '-bf17-value:checked'
                            )
                            .val() ?
                            '1' :
                            '0';
                    break;
                default:
                    break;
            }
            return obj;
        }
    })
    .get();

console.log(extraClassArray);

例如,我希望能够进行校准extraClassArrat['A']以获取值 0 或 1。

标签: javascriptjqueryarraysobjectarray.prototype.map

解决方案


您可以使用一个简单的 javascript 对象:

var obj = {
    key1: value1,
    key2: value2
};

添加这样的属性:

obj["key3"] = "value3";

并以这种方式获取您的价值观:

var getProperty = function (propertyName) {
    return obj[propertyName];
};

getProperty("key1");
getProperty("key2");
getProperty("key3");

推荐阅读