正如标题所说,我有以下数组:
var viewModel = [{}, {}, {}];
在我的代码中的某些时候,我可能会填充第二个元素:
var viewModel = [{}, { "test" : "value" }, {}];
我需要一种评估元素是否为空的方法。在上面的例子中,元素0和2将评估为true,元素1将评估为false。
我尝试过什么
我尝试将每个元素与undefined
和' '
进行比较无济于事。我知道可能会检查每个元素的test
属性(如果它存在它不是空的)但我理想地想要一种确定它的方法,不依赖于任何属性名称。
(我已经标记了jQuery,因为我对jQuery建议持开放态度。)
答案 0 :(得分:1)
{} === {} //false
JSON.stringify({}) === JSON.stringify({}) //true
JSON.stringify(myArray[0]) === JSON.stringify({}) //true
在您的特定情况下,这可能会派上用场。我也没有考虑过漏洞。
答案 1 :(得分:0)
这个怎么样
// function to check if object is empty
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
var viewModel = [{}, { "test" : "value" }, {}];
// loop
for(var i = 0; i < viewModel.length; i++)
{
// returns true if empty, otherwise false
console.log(isEmpty(viewModel[i]));
}
答案 2 :(得分:0)
您可以通过循环遍历数组来计算每个对象中的元素。
for(var i = 0; i < test.length; i++){
if(Object.keys(test).length == 0){
//element array[i] is empty!
}
}
这仅适用于支持Ecma-script 5的浏览器。
答案 3 :(得分:0)
获取一个对象数组并返回一个新的true / false值数组
function isObjectEmpty(arr) {
return arr.map(function (el) {
return Object.keys(el).length === 0 ? true : false;
});
}
isObjectEmpty(yourExampleArray) // [true, false, true]