Nic*_*ick 14 javascript arrays
我需要测试数组中的每个项是否彼此相同.例如:
var list = ["l","r","b"]
应评估为false,因为每个项目不相同.另一方面这个:
var list = ["b", "b", "b"]
应该评估为真,因为它们都是相同的.实现这一目标的最有效(速度/资源)方式是什么?
pim*_*vdb 16
在ES5中,您可以:
arr.every(function(v, i, a) {
// first item: nothing to compare with (and, single element arrays should return true)
// otherwise: compare current value to previous value
return i === 0 || v === a[i - 1];
});
Run Code Online (Sandbox Code Playgroud)
.every 也会发生短路.
Dog*_*ert 14
function identical(array) {
for(var i = 0; i < array.length - 1; i++) {
if(array[i] !== array[i+1]) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
一行答案是:
arr.every((val, ind, arr) => val === arr[0]);
Run Code Online (Sandbox Code Playgroud)
您可以查看Array.every了解更多详细信息。
笔记:
ES5。true对于放置在空数组上的任何条件,arr.every(callback[, thisArg]) 或 array.every(function(currentValue, index, arr), thisValue)你总是可以做一个新的 Set,然后检查长度。
var set1 = [...new Set(list)].length === 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16551 次 |
| 最近记录: |