Javascriptで変数が空かどうかを確認するにはどうすればよいですか?ばかげた質問で申し訳ありませんが、私はJavascriptの初心者です!
if(response.photo) is empty {
do something
else {
do something else
}
response.photo
JSONからのものであり、空のデータセルである場合もあります。空かどうか確認したい。
Javascriptで変数が空かどうかを確認するにはどうすればよいですか?ばかげた質問で申し訳ありませんが、私はJavascriptの初心者です!
if(response.photo) is empty {
do something
else {
do something else
}
response.photo
JSONからのものであり、空のデータセルである場合もあります。空かどうか確認したい。
false
かどうかということですか?
回答:
空の文字列をテストする場合:
if(myVar === ''){ // do stuff };
宣言されているが定義されていない変数をチェックする場合:
if(myVar === null){ // do stuff };
定義されていない可能性のある変数をチェックしている場合:
if(myVar === undefined){ // do stuff };
両方をチェックしている場合、つまり、変数がnullまたは未定義の場合:
if(myVar == null){ // do stuff };
undefined
「定数」はまったく定数ではないため、使用しないでください。typeof myVar === 'undefined'
代わりに使用してください。
var undefined = 1;
3番目の例を破ります。常に使用typeof
して確認してください"undefined"
。
if(typeof variable === "undefined")
これはあなたが思っているよりも大きな質問です。変数はさまざまな方法で空にすることができます。ちょっと知っておくべきことによります。
// quick and dirty will be true for '', null, undefined, 0, NaN and false.
if (!x)
// test for null OR undefined
if (x == null)
// test for undefined OR null
if (x == undefined)
// test for undefined
if (x === undefined)
// or safer test for undefined since the variable undefined can be set causing tests against it to fail.
if (typeof x == 'undefined')
// test for empty string
if (x === '')
// if you know its an array
if (x.length == 0)
// or
if (!x.length)
// BONUS test for empty object
var empty = true, fld;
for (fld in x) {
empty = false;
break;
}
!x
ただし、空の配列には当てはまりません。
これはすべての場合をカバーする必要があります:
function empty( val ) {
// test results
//---------------
// [] true, empty array
// {} true, empty object
// null true
// undefined true
// "" true, empty string
// '' true, empty string
// 0 false, number
// true false, boolean
// false false, boolean
// Date false
// function false
if (val === undefined)
return true;
if (typeof (val) == 'function' || typeof (val) == 'number' || typeof (val) == 'boolean' || Object.prototype.toString.call(val) === '[object Date]')
return false;
if (val == null || val.length === 0) // null or 0 length array
return true;
if (typeof (val) == "object") {
// empty object
var r = true;
for (var f in val)
r = false;
return r;
}
return false;
}
上記の多くのソリューションに潜在的な欠点があるので、自分でコンパイルすることにしました。
注:Array.prototype.someを使用します、お使いのブラウザのサポートをご確認ください。
以下の解決策は、次のいずれかに該当する場合、変数が空であると見なします。
false
すでにのような多くのことをカバーする、0
、""
、[]
、とさえ[""]
と[0]
null
またはそのタイプは'undefined'
これは、それ自体が空の値のみで構成されるオブジェクト/配列です(つまり、各部分が等しいプリミティブに分解されfalse
ます)。オブジェクト/配列構造体に再帰的にドリルをチェックします。例えば
isEmpty({"": 0}) // true
isEmpty({"": 1}) // false
isEmpty([{}, {}]) // true
isEmpty(["", 0, {0: false}]) //true
機能コード:
/**
* Checks if value is empty. Deep-checks arrays and objects
* Note: isEmpty([]) == true, isEmpty({}) == true, isEmpty([{0:false},"",0]) == true, isEmpty({0:1}) == false
* @param value
* @returns {boolean}
*/
function isEmpty(value){
var isEmptyObject = function(a) {
if (typeof a.length === 'undefined') { // it's an Object, not an Array
var hasNonempty = Object.keys(a).some(function nonEmpty(element){
return !isEmpty(a[element]);
});
return hasNonempty ? false : isEmptyObject(Object.keys(a));
}
return !a.some(function nonEmpty(element) { // check if array is really not empty as JS thinks
return !isEmpty(element); // at least one element should be non-empty
});
};
return (
value == false
|| typeof value === 'undefined'
|| value == null
|| (typeof value === 'object' && isEmptyObject(value))
);
}
[{},0,""]
。ここでの他のすべてのソリューションは、距離を移動しない2ライナーと、オブジェクトに対して機能し、libを必要とするアンダースコア関数です。
ここに私の最も簡単な解決策があります。
PHP
empty
関数に触発された
function empty(n){
return !(!!n ? typeof n === 'object' ? Array.isArray(n) ? !!n.length : !!Object.keys(n).length : true : false);
}
//with number
console.log(empty(0)); //true
console.log(empty(10)); //false
//with object
console.log(empty({})); //true
console.log(empty({a:'a'})); //false
//with array
console.log(empty([])); //true
console.log(empty([1,2])); //false
//with string
console.log(empty('')); //true
console.log(empty('a')); //false
http://underscorejs.org/#isEmptyを参照してください
isEmpty_.isEmpty(object)列挙可能なオブジェクトに値が含まれていない(列挙可能な独自のプロパティがない)場合はtrueを返します。文字列および配列のようなオブジェクトの場合、_。isEmptyはlengthプロパティが0であるかどうかをチェックします。
JSONのキーの空のチェックは、ユースケースによって異なります。一般的なユースケースでは、次のことをテストできます。
null
undefined
''
{}
[]
(配列はオブジェクトです)関数:
function isEmpty(arg){
return (
arg == null || // Check for null or undefined
arg.length === 0 || // Check for empty String (Bonus check for empty Array)
(typeof arg === 'object' && Object.keys(arg).length === 0) // Check for empty Object or Array
);
}
次の場合にtrueを返します。
isEmpty(''); // Empty String
isEmpty(null); // null
isEmpty(); // undefined
isEmpty({}); // Empty Object
isEmpty([]); // Empty Array
変数をif条件内に置くだけで、変数に値がある場合はtrueを返し、そうでない場合はfalseを返します。
if (response.photo){ // if you are checking for string use this if(response.photo == "") condition
alert("Has Value");
}
else
{
alert("No Value");
};
それはあなたが「空」が何を意味するかによります。最も一般的なパターンは、変数が未定義かどうかを確認することです。多くの人は、たとえば次のようにnullチェックも行います。
if (myVariable === undefined || myVariable === null)...
または、短い形式で:
if (myVariable || myVariable === null)...
undefined
「定数」はまったく定数ではないため、使用しないでください。typeof myVar === 'undefined'
代わりに使用してください。
if (myVar == undefined)
varが宣言されているが、初期化されていないかどうかを確認するために機能します。
undefined
コードで再定義できる(つまりundefined = true
有効である)ため、これは危険です。
undefined
「定数」はまったく定数ではないため、使用しないでください。typeof myVar === 'undefined'
代わりに使用してください。
PHPのempty
関数に相当するものを探している場合は、次を確認してください。
function empty(mixed_var) {
// example 1: empty(null);
// returns 1: true
// example 2: empty(undefined);
// returns 2: true
// example 3: empty([]);
// returns 3: true
// example 4: empty({});
// returns 4: true
// example 5: empty({'aFunc' : function () { alert('humpty'); } });
// returns 5: false
var undef, key, i, len;
var emptyValues = [undef, null, false, 0, '', '0'];
for (i = 0, len = emptyValues.length; i < len; i++) {
if (mixed_var === emptyValues[i]) {
return true;
}
}
if (typeof mixed_var === 'object') {
for (key in mixed_var) {
// TODO: should we check for own properties only?
//if (mixed_var.hasOwnProperty(key)) {
return false;
//}
}
return true;
}
return false;
}
空の変数をチェックするためのより簡単な(短い)ソリューションを次に示します。この関数は、変数が空かどうかをチェックします。提供される変数には、混合値(null、undefined、array、object、string、integer、function)が含まれる場合があります。
function empty(mixed_var) {
if (!mixed_var || mixed_var == '0') {
return true;
}
if (typeof mixed_var == 'object') {
for (var k in mixed_var) {
return false;
}
return true;
}
return false;
}
// example 1: empty(null);
// returns 1: true
// example 2: empty(undefined);
// returns 2: true
// example 3: empty([]);
// returns 3: true
// example 4: empty({});
// returns 4: true
// example 5: empty(0);
// returns 5: true
// example 6: empty('0');
// returns 6: true
// example 7: empty(function(){});
// returns 7: false
const isEmpty = val => val == null || !(Object.keys(val) || val).length;
function isEmpty(variable) {
const type = typeof variable
if (variable === null) return true
if (type === 'undefined') return true
if (type === 'boolean') return false
if (type === 'string') return !variable
if (type === 'number') return false
if (Array.isArray(variable)) return !variable.length
if (type === 'object') return !Object.keys(variable).length
return !variable
}