[英]Check the array has empty element or not
如何檢查數組是否有空元素? 想象一下這個數組,
var arr = [ 'a', 'b', , 'd'];
arr[2] undefined
。 我想檢查一下。 如果元素有空元素,則返回“真”或返回假。 也許像這樣,
function hasEmptyElement(array){
for (var i=0; i<array.length; i++){
if (typeof arr[i] == 'undefined'){
return true;
// and then ?
// should I use double for loop or helper variable?
}
}
}
我很困惑我該怎么做。 請高手幫幫我。
從 ES2016 開始,您應該使用Array.prototype.includes :
const array = ["a", "b", , "d"];
array.includes(undefined); // true
(你不需要寫undefined
,但這可以讓你更清楚發生了什么。)
請注意,此方法將值undefined
插槽和空插槽視為相同,盡管它們不是。 如果您還需要區分這兩種情況,從 ES2017 開始,您可以使用Object.values使以下表達式為true
如果數組中有空槽:
Object.values(array).length !== array.length; // true
首先,注意空插槽和具有未定義值的插槽之間的區別:
var arr = [/*empty slot*/, undefined];
Object.keys(arr); // ["1"] but not "0"
"0" in arr; // false
"1" in arr; // true
ES5 數組方法跳過空槽。 ES6 [].includes
沒有。
這意味着你可以使用
arr.includes(undefined); // has empty slot OR contains undefined value
arr.indexOf(undefined) > -1; // contains undefined value
如果您只想測試是否有空槽,您可以使用for
循環手動迭代並檢查是否存在 0 和數組長度之間的所有索引,例如使用in
運算符。
(function() {
for(var i=0; i<arr.length; ++i) if(!(i in arr)) return true;
return false;
})(); // has empty slot
或者您也可以使用 ES5 數組方法並檢查它們是否跳過了索引。
var n = 0;
arr.some((_,i) => i !== n++); // has empty slot
你可以這樣做:
function hasEmptyElement(array){
for (var i=0; i<array.length; i++){
if (!(i in array)) {
return true;
}
}
return false;
}
這個實現的要點是它在[1,,3]
和[1, undefined, 3]
之間有所不同
試試
var hasAnyEmptyElement = arr.filter(function(val){ return (typeof val) != "undefined" }).length != arr.length;
演示
var arr = [1,2]; arr[4] = 2; var hasAnyEmptyElement = arr.filter(function(val){ return (typeof val) != "undefined" }).length != arr.length; alert(hasAnyEmptyElement);
你也可以使用Array.prototype.findIndex()
var arr = ['a', 'b', , 'd']; document.write(arr.findIndex(e => e === undefined) > -1);
var temp = arr.filter(item => item);
這將為您提供一個包含以下元素的新數組: ["a", "b", "d"]
上述解決方案將有助於刪除空值和空值。
使用 set 的簡單實現
var arr = [ 'a', 'b', , 'd'];
// Using Set from es6
var arraySet = new Set(arr)
arraySet.has(undefined) // returns true
謝謝!
你可以這樣試試:
var arr = [ 'a', 'b',, 'd']; function myfunc(arr) { for(var i=0; i<arr.length; i++) { if (!(i in arr)) return false; } return true; } alert( myfunc(arr));
對於 ES5- 你可以做
var arr = [ 'a', 'b', , 'd'];
arr.filter(function() { return true }).length === arr.length
如果有undefined
那將返回false
ES2015 檢查包括
為了簡單起見,您可以使用以下比較來實現相同的目標。
function hasEmptyElement(array){
for(var i=0;i<array.length;i++){
if(my_arr[i] === "")
return false;
}
return true;
}
`Check null/undefined values in Array`
function checkNullValue(a) {
if (typeof (a) == 'undefined' || a === null) {
return false;
} else {
return true;
}
}
var arrayMonthVal = ['1','2',,'6','null', '8'];
var pass = arrayMonthVal.some(checkNullValue);
觀察:輸入數組無效。 它應該是var arr = [ 'a', 'b', '', 'd'];
現在,您可以使用Array.some()
方法檢查數組是否包含空值。
演示:
var arr = [ 'a', 'b', '', 'd']; console.log(arr.some(item =>;item))
我最近需要知道給定的數組元素是否為空,這個頁面幫助我得出以下解決方案:
/** Determine if an array element is empty.
* @param {*[]} arr
* @param {number} [i] If not provided, check entire arr for empty.
* @return {boolean}
*/
const hasEmpty = (arr, i) => 0<=i
? !arr.some((_, j) => j==i)
: Object.values(arr).length!==arr.length;
你好試試這個....
if (typeof arr[i] == 'NULL'){
return true;
}
希望這可以奏效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.