javascript - JQUERY - 获取值并以数组值显示(如下所示)
问题描述
使用下面的 HTML/JS 代码来满足我的要求。我个人能够按预期获得值。
但是,我需要以数组格式插入提取的值,如下所示。我无法使用这种 JS 代码方法来做到这一点。
var getOfferCode;
var getRoomCode;
var getTitle;
var combinedArr = [];
$('.wrapper-container').each(function() {
getOfferCode = $(this).find('.list-item').attr('data-offer-code');
getRoomCode = $(this).find('.list-item').attr('data-room-code');
getTitle = $(this).find('.list-item h2').html();
combinedArr.push();
});
console.log(combinedArr)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper-container">
<div class="list-item" data-offer-code="sss" data-room-code="Twin">
<h2>Title 1</h2>
</div>
<div class="list-item" data-offer-code="fff" data-room-code="Max">
<h2>Title 2</h2>
</div>
<div class="list-item" data-offer-code="ddd" data-room-code="Min">
<h2>Title 2</h2>
</div>
</div>
Expected format:
roomArray: {
[
{
offerCode: "sss",
roomCode: "Twin",
title: "Title 1"
},
{
offerCode: "fff",
roomCode: "Max",
title: "Title 2"
},
{
offerCode: "ddd",
roomCode: "Min",
title: "Title 3"
}
]
}
解决方案
.push 方法需要参数——你要推送的对象
例如
combinedArr.push({getOfferCode,getRoomCode,getTitle});
此外,您each
只能获得第一个条目,因为您只有一个包装器。你需要循环.list-item
。
列表项的映射更优雅
const roomArray = $('.wrapper-container div.list-item').map(function() {
const offerCode = $(this).attr('data-offer-code');
const roomCode = $(this).attr('data-room-code');
const title = $(this).find('h2').html();
return { offerCode, roomCode, title }
}).get();
console.log(roomArray)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper-container">
<div class="list-item" data-offer-code="sss" data-room-code="Twin">
<h2>Title 1</h2>
</div>
<div class="list-item" data-offer-code="fff" data-room-code="Max">
<h2>Title 2</h2>
</div>
<div class="list-item" data-offer-code="ddd" data-room-code="Min">
<h2>Title 3</h2>
</div>
</div>
这是您修复的代码
var getOfferCode;
var getRoomCode;
var getTitle;
var combinedArr = [];
$('.wrapper-container .list-item').each(function() {
getOfferCode = $(this).attr('data-offer-code');
getRoomCode = $(this).attr('data-room-code');
getTitle = $(this).find('h2').html();
combinedArr.push({getOfferCode,getRoomCode,getTitle});
});
console.log(combinedArr)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper-container">
<div class="list-item" data-offer-code="sss" data-room-code="Twin">
<h2>Title 1</h2>
</div>
<div class="list-item" data-offer-code="fff" data-room-code="Max">
<h2>Title 2</h2>
</div>
<div class="list-item" data-offer-code="ddd" data-room-code="Min">
<h2>Title 2</h2>
</div>
</div>
推荐阅读
- jpa - 更改 OPENJPA_SEQUENCE_TABLE 的默认名称
- c# - System.InvalidCastException “对象必须实现 IConvertible。” 使用 BinaryFormatter 反序列化字典时
- c# - 如何从 X509Certificate2 获取 RFC-1779 中的颁发者名称?
- angular - angular 5 多个路由器插座和子模块
- node.js - Mongoose:二进制子类型 4 到字符串
- bash - 解析作为另一个命令一部分的heredoc中的变量
- android - Cordova 应用在 Android 上几分钟后停止在后台播放音频
- typescript - 如何在元组中使用剩余参数?
- sql - 给定参与游戏的玩家,根据总分变化对玩家组合进行排名
- java - 自动填写注册表单字段