Javascript:一个项目数组的sum-all-found.data()
Javascript: sum all found .data() for an array of items
我们有一个未排序的列表。
<ul>
<li class="item" data-speed="500" data-delay="150"></li>
<li class="item" data-speed="700"></li>
</ul>
我正在研究一个函数,从$('.item')数组返回最大和速度+延迟。在当前示例中,它应该返回700。
类似的东西
function sumArrayData(ar) { return maximum speed+delay for ar }
感谢您的意见。
仅限Javascript。您可能不需要返回整个未排序的数组。但到目前为止,这应该能奏效。我不得不承认,实际上我不知道它是否比jquery解决方案更快,正如您提到的性能原因。
var elements = document.getElementsByClassName('item');
function maximum(e){
var arr = [];
var delay = 0;
var speed = 0;
var res = 0;
for(var i=0;i<e.length;i++)
{
speed = parseInt(e.item(i).getAttribute('data-speed'), 10);
delay = parseInt(e.item(i).getAttribute('data-delay') || 0, 10);
res = speed + delay;
arr.push(res);
}
return arr.sort(function(a, b){return b-a});
}
var myMax = maximum(elements);
alert(myMax[0]);
这就是你想要的:
var max = Math.max.apply(Math, $('.item').map(function() {
var data = $(this).data();
return data.speed + (data.delay || 0);
}).get());
以下是的示例
因为您在下面的评论中要求提供一个简单的javascript解决方案,所以我转换了脚本
给你:
var max = Math.max.apply(Math, Array.prototype.slice.call(document.getElementsByClassName('item')).map(function(elm) {
var data = {
speed: parseInt(elm.getAttribute('data-speed'), 10),
delay: parseInt(elm.getAttribute('data-delay'), 10)
};
return data.speed + (data.delay || 0);
}));
下面是这个例子。
以下是这两个代码片段的性能比较。
相关文章:
- 当我追加到数组时,Ractive.js会追加或重新生成all吗
- $q.all当输入数组中的一项不是promise时,Typescript检查器失败
- 当数组中的某个函数没有返回promise时,我可以使用$q.all吗
- Promise和Promise.all(数组)在数组实现之前执行
- ES6 Promise.all() promise 数组的奇怪分辨率
- 链承诺.all 与从上一个承诺返回的数组.all.
- Promises.all() 在具有 'promised' 属性的对象数组上
- 在 Jscript 中为 Q.all() 构建一个动态函数数组
- 为什么在 Promise.all() 之后没有调用 onJect,其中数组中包含的 Promise.reject() 传
- Promise.all 在完成之前返回一个未定义和解析的数组
- 从输入数组中获取sum's元素
- Javascript:一个项目数组的sum-all-found.data()
- 我如何获得一个JS数组,它有一些元素也是数组,并使ALL数组元素成为顶级元素
- parseInt关于数组和sum问题
- 数组中单词的匹配(sum)、(min)的正则表达式
- 为什么,如果“$q.all”没有返回一个promise数组,则是一个未抛出的异常
- 当promise数组的长度不确定时,Q.js Q.all()
- 动态推入$q.all()承诺数组
- 调用reduce to sum对象数组返回NaN
- 添加了Javascript数组sum min Max