我需要从某些表单中获取一些值,因此当我需要从表单中调用特定值时,我想为数组中的特定键进行调用。但是Array.prototype.map
创建一个索引为(0,1,2)的对象,然后存储键/值,因此我无法在不知道索引的情况下访问特定值。
我尝试了array.push()以及here中的函数,这似乎太多了,因为我知道有一种更简单的方法。
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。
答案 0 :(得分:0)
您可以使用一个简单的javascript对象:
var obj = {
key1: value1,
key2: value2
};
添加这样的属性:
obj["key3"] = "value3";
并以此方式获得您的价值观:
var getProperty = function (propertyName) {
return obj[propertyName];
};
getProperty("key1");
getProperty("key2");
getProperty("key3");
答案 1 :(得分:0)
您的代码正在创建具有附加属性A,A2等的数组数组。
首先,我认为您对数组和对象之间的区别感到困惑,应该仔细阅读(也许您来自PHP?)
在这种情况下,您应该做的是在循环外创建一个对象,并在循环中分配其属性。因此,您应该使用foreach()而不是map。
类似的东西:
const extraClassArray = {};
licenseClass
.forEach( ( i, e ) => {
if ( '' != $( e ).val() && e.hasAttribute( 'required' ) ) {
let id = $( e ).data( 'parent' );
switch ( $( e ).val() ) {
case 'A':
extraClassArray.A =
'1' ===
$( '#license-class-' + id )
.find( '#license-class-' + id + '-a-value:checked' )
.val() ?
'1' :
'0';
break;
case 'A2':
extraClassArray.A2 =
'1' ===
$( '#license-class-' + id )
.find( '#license-class-' + id + '-a2-value:checked' )
.val() ?
'1' :
'0';
break;
case 'B':
extraClassArray.BF17 =
'1' ===
$( '#license-class-' + id )
.find(
'#license-class-' + id + '-bf17-value:checked'
)
.val() ?
'1' :
'0';
break;
default:
break;
}
}
})