【发布时间】:2018-01-14 23:47:26
【问题描述】:
我已将带有嵌套 div 的 div 动态添加到 dom。这些具有数据属性:
data-name-nr, data-model, data-price.
我想要的是将“data-price”的最高值从所有“data-div”中的每个数组中取出。在我的示例中,最后一个
中有两个嵌套的 div更多解释:在我的示例中,我有三个带有“frame”类的 div = 我需要一个包含三个值的数组。实际上,晚上的时间在 1 到 10 之间,甚至更多。
所以我的例子的结果是
let array = [100,150,200]
or
let object = {1:100,2:150,3:200} //from the name-nr
到目前为止,我只设法映射了data-items
我尝试了map.get 和其他人,他们都给了我错误,我不知道我应该去哪个方向。请问您能帮忙吗?
例子:
HTML
<div class="flex">
<div class="frame" data-name-nr="1">
<div class="border" data-name-nr="1" data-price="100" data-div="1/1"></div>
</div>
<div class="frame" data-name-nr="2">
<div class="border" data-name-nr="2" data-price="150" data-div="1/1"></div>
</div>
<div class="frame" data-name-nr="3">
<div class="border fifty" data-name-nr="3" data-price="100" data-div="1/2"></div>
<div class="border fifty" data-name-nr="3" data-price="200" data-div="2/2"></div>
</div>
</div>
JS
function functionName() {
jQuery( ".frame .box" ).map(function() {
const key = ['name','model','price']
let values = [[jQuery(this).data("name-nr"),( jQuery(this).data('div')),( jQuery(this).data('price'))]]
let result = values.map(row =>
row.reduce((acc, cur, i) =>
(acc[key[i]] = cur, acc), {}))
console.log(result[0])
})
}
$(document).on('click', '.click', functionName)
控制台
Object { name: 1, model: "1/1", price: 100 }
Object { name: 2, model: "1/1", price: 150 }
Object { name: 3, model: "1/2", price: 100 }
Object { name: 3, model: "2/2", price: 200 }
【问题讨论】:
-
所以您的目标是从您显示的控制台输出中提取最后一行?
-
目标不明确。您说取最高值,然后显示所有值的结果。不清楚您要做什么
-
好的,我会重新提出我的问题。到目前为止,我只设法映射了内容。现在我需要过滤它。
-
尤利西 BN。不仅持久。从最后一个(名字:3)开始,我需要更大的,这次恰好是最后一个)
-
所以如果我可以重新表述:您映射到没有
data-name-nr的重复项,并且您想按较低的值过滤掉(例如:删除具有相同名称的项目的较低值)
标签: javascript jquery arrays ecmascript-6 flexbox