我有一个带有两种数据类型的对象:Array
和String
:
{
"livingroom": [
{
"app": "",
"name": "s1",
"thumbnail": "https://storage.googleapis.com/peterbucket/istagingViewer/sigstaging.com.tw/Cuiti/study/web/thumb_floorplan1.jpg"
}
],
"study": [
{
"app": "",
"name": "s0",
"thumbnail": "https://storage.googleapis.com/peterbucket/istagingViewer/sigstaging.com.tw/Cuiti/study/web/thumb_floorplan3.jpg"
}
],
"outdoor": [],
"id": "-KF28-_Vdve-u3498eQ1",
"name": "Cuiti"
}
现在,我正在遍历所有值,并且只想返回第一个非空数组(在这种情况下,是的值livingroom
)。
// Template
<div v-for="value in object" v-if="isFirstNonEmptyArray(value, object)">
// JavaScript
isFirstNonEmptyArray (value, object) {
if (value instanceof Array) {
if (value.length > 0) {
// What to do here?
}
}
},
但是如您所见,在检查值是否为空后,我被卡住了。接下来我应该写什么?
这是一个棘手的问题,因为Javascript对象的属性没有顺序。
换句话说,要返回第一个具有空值的此类属性非常困难,因为不能保证遍历对象属性的任何循环都以相同的顺序命中它们。因此,true
如果该属性是对象中的第一个此类值,则不可能返回,因此您的问题无法按所述解决:)
如果只有一个具有非空长度的属性,那么您可以做的最好的是:
function FirstNonEmptyArray(object) {
for (var property in object) {
if (object.hasOwnProperty(property) && (object[property] instanceof Array)) {
if (object[property].length > 0) {return property;}
}
}};
如果您有多个具有非空长度的属性,那么不能保证通过对象进行迭代的顺序。这些属性中的任何一个都可以返回。
如果属性名称的长度不为零,则最好将属性名称附加到数组中,然后按以下方式对其进行处理:
function AllNonEmptyArrays(object) {
var array = []
for (var property in object) {
if (object.hasOwnProperty(property) && (object[property] instanceof Array)) {
if (object[property].length > 0) {array.push(property);}
}
return array;
}};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句