jQuery:按类循环元素并创建关联数组

问题描述

我有一个可变的元素列表,需要成对地获取它们的名称和值(关联数组或对象)。

到目前为止,我有以下内容,但如何为每个元素创建名称和值对?

var names = [];
var values = [];

$('.modalField').each(function() {
    fieldName = $(this).attr('name');
    fieldVal = $(this).val();
    
    names.push(fieldName);
    values.push(fieldVal);
});

感谢您的帮助,
汤姆

解决方法

使用bracket notation

var assoc = {};
$('.modalField').each(function() {
    let fieldName = $(this).attr('name');
    let fieldVal = $(this).val();
    assoc[fieldName] = fieldVal;
});

(此外,您应该在函数内部使用let / var / const初始化变量,以免它们泄漏到全局范围内。)

,

您说的是名称-值,但您似乎想要一个对象

你可以做

// Object
const obj = {};
$('.modalField').each(function() {
  const fieldName = $(this).attr('name');
  const fieldVal = $(this).val();
  obj[fieldName] = fieldVal
});

console.log(obj)

// OR Name-Value pair


const arr = $('.modalField').map(function() {
  return {
    [$(this).attr('name')]: $(this).val()
  }
}).get()


console.log(arr)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="a" value="1" class="modalField" />
<input name="b" value="2" class="modalField" />
<input name="c" value="3" class="modalField" />
<input name="d" value="4" class="modalField" />

,

像这样吗?

AddToEndSingleStrategy
var fields = [];

$('.modalField').each(function() {
    var name = $(this).attr('name');
    var value = $(this).val();
    
    fields.push({ name,value });
});

console.log(fields);

输出:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <input class="modalField" name="n1" value="v1" />
  <input class="modalField" name="n2" value="v2" />
  <input class="modalField" name="n3" value="v3" />
</div>
,

建议您创建一个对象,而不要使用name&values数组。

var obj ={};
$('.modalField').each(function() {
    obj[$(this).attr('name')] = $(this).val();
   
});

这样,您将拥有这样的对象(名称仅用作示例):{“ name1”:“ val1”,“ name2”:“ val2”,“ name3”:“ val3”}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...