如何检查值是否为空数组?

时间:2016-03-30 10:44:35

标签: javascript

我有一个像这样的JSON:

{
  "livingroom": [],
  "bedroom": [],
  "study": [
    {
      "name": "s0",
      "thumbnail": "https://storage.googleapis.com/peterbucket/0/small_istagingViewer/sig@staging.com.tw/Cuiti/study/web/螢幕快照 2016-03-29 下午2.12.32.png",
      "web": "https://storage.googleapis.com/peterbucket/istagingViewer/sigstaging.com.tw/Cuiti/study/web/201603292.12.32.png"
    }
  ],
  "outdoor": [],
  "other": [],
  "id": "-KE5spXGRjC_9WSIh_eN",
  "name": "Cuiti",
  "categoryCount": 1,
  "panoramaCount": 1
}

我想只排除[]。我尝试了value.length > 0,但是因为某些值不是数组而引发错误。

什么是最好的解决方案?

4 个答案:

答案 0 :(得分:2)

您可以使用Array.isArray()检查某些内容是否为数组:

if (Array.isArray(value) && value.length > 0) { }

如果需要,请使用MDN中的此填充:

if (!Array.isArray) {
    Array.isArray = function(arg) {
        return Object.prototype.toString.call(arg) === '[object Array]';
    };
}

答案 1 :(得分:2)

首先,您的示例不是JSON,它是一个Javascript对象。为了从这个对象中删除空数组,你可以像这样检查它

for(var key in yourObject){
    var value = yourObject[key];
    if(Array.isArray(value) && value.length === 0){
        delete yourObject[key];
    }
}

答案 2 :(得分:1)

您可以使用constructor属性检查值是否为数组,然后检查值的长度

for(var key in items){
    var value=items[key];
    if(value.constructor===Array && value.length === 0){
        delete items[key];
    }
}

答案 3 :(得分:1)

您可以使用instanceof运算符

$filename = "file.txt";
$content = file_get_contents($filename);
$lines_array = explode(PHP_EOL, $content);

//overwrite the line that you want.
$lines_array[5] = "New text at line 6!";

file_put_contents($filename, implode(PHP_EOL, $lines_array));