我有一个像这样的数组:
["", "", "", "1", "", ""]
我想提醒所有数组值都是blanks
时,即数组是这样的:
["", "", "", "", "", ""]
我如何实现这一目标。
答案 0 :(得分:10)
尝试一下
["", "", "", "", "", ""].join("").length==0
如果要删除空格,
["", "", "", "", "", ""].join("").replace(/\s/gi,'').length==0
注意:
这不适用于["", [], "", null, undefined, ""]
答案 1 :(得分:7)
使用every()
:
const allEmpty = arr => arr.every(e => e === "");
console.log(allEmpty(["", "", "", "1", "", ""]));
console.log(allEmpty(["", "", "", "", "", ""]));
答案 2 :(得分:2)
您始终可以使用基本的for
循环来解决问题:
function allBlanks(arr)
{
for (var i = 0; i < arr.length; i++)
{
if (arr[i] !== "") return false;
}
return true;
}
console.log(allBlanks(["", "", "", "1", "", ""]));
console.log(allBlanks(["", "", "", "", "", ""]));
console.log(allBlanks(["", [], "", null, undefined, ""]));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
答案 3 :(得分:1)
const isEmpty=arr=>{
return arr.filter(it=>it.length>0).length ==0
}
arr1 = ["",""]
arr2 = ["1",""]
console.log(isEmpty(arr1))
console.log(isEmpty(arr2))
答案 4 :(得分:1)
'A'
答案 5 :(得分:1)
这也是一种更通用的方法,它将compact
数组删除所有falsey
的值,然后检查剩余长度:
let compact = a => a.reduce((r,c) => (!!c ? r.push(c) : null, r),[])
let isEmpty = array => compact(array).length == 0
console.log(isEmpty(["", false, 0, "", null, undefined])) // true
console.log(isEmpty(["", 1])) // false
console.log(isEmpty(["", []])) // false
console.log(isEmpty(["", {}])) // false
但是,如果这是您唯一关心的用例,那么您也可以使用Array.some:
let isEmpty = a => !a.some(x => x !== '')
// OR let isEmpty = a => !a.some(x => x.toString().length > 0)
console.log(isEmpty(["", "", "", "", "", ""]))
console.log(isEmpty(["", "", "1", "", "", ""]))
您也可以使用Array.reduce:
let isEmpty = a => !a.reduce((r,c) => `${r}${c}`).length
console.log(isEmpty(["", "", "", "", "", ""]))
console.log(isEmpty(["", "", "1", "", "", ""]))
let isEmpty = a => !a.filter(x => x.toString().length).length
console.log(isEmpty(["", "", "", "", "", ""]))
console.log(isEmpty(["", "", "1", "", "", ""]))
这仅对当前输入有效。不反对将数组,对象文字等作为输入数组一部分的情况。
如果您使用的是lodash
,则可能是(通过_.every
和_.isEmpty
):
let isArrayEmpty = a => _.every(a, _.isEmpty)
console.log(isArrayEmpty(["", "", "", "", "", ""]))
console.log(isArrayEmpty(["", "", "1", "", "", ""]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
或通过_.compact
也可以删除虚假值:
let isArrayEmpty = a => !_.compact(a).length
console.log(isArrayEmpty(["", "", "", "", "", ""]))
console.log(isArrayEmpty(["", "", "1", "", "", ""]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
答案 6 :(得分:0)
function isEmpty (arr){
return arr.every(e => e === "")
};
let a = ["", "", "", "1", "", ""];
let b = ["", "", "", "", "", ""]
console.log(isEmpty(a));
console.log(isEmpty(b));
答案 7 :(得分:0)
我实现了一个用于检查空数组的小功能,该功能将在所有浏览器中正常工作。
var list=["1", [], "", null, undefined, ""];
var listE=["", "", "","", "", "", ""];
var listE1=["", [], "", null, undefined, ""];
function isArrayEmpty(arr){
return arr.toString().replace(/,/g, '')=="";
}
alert(isArrayEmpty(list))
alert(isArrayEmpty(listE))
alert(isArrayEmpty(listE1))
答案 8 :(得分:0)
1)保持数组大小为n
2)找到编号。变量中为空的值表示(EmptyValues),因此每当您从数组中删除元素时,将变量EmptyValues的值更新为1。
3)检查是否(EmptyValue == n){随便给警报}