如果's的第一个非空数组
Return true if it's first non-empty array
我有一个对象,它有两种类型的数据: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;
}};
希望这段代码会有用。Js-obejct不保证其密钥的顺序。所以只找出那些数组和非空的密钥
var _localArray = [] // Use to store non empty array
for(var keys in a){ // Iterating over object. a is the object
// Checking if the current key is an array & it's length is >= 1
if(Object.prototype.toString.call(a[keys] ) === '[object Array]' && a[keys].length>=1) {
_localArray.push(a[keys]); // push the key in temp array
}
}
console.log(_localArray[0]); // will log the first non empty array
jsfiddle
相关文章:
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- 在javascript数组中推送多个值并获取第一个元素
- 如何访问 JSON 对象数组的第一个元素
- 如何选择数组中的第一个对象(当 array[0] 不起作用时)
- 数组未发送所有元素,只获取第一个元素
- 正在查找数组中第一个匹配元素的索引
- 如果's的第一个非空数组
- 创建每个数组的第一个元素的数组
- 按第一个字符进行数组搜索
- KendoUI AreaChart的分类轴仅基于第一个数据组
- 什么's将数组传递给app.get()的第一个参数的替换项
- node.js请求POST数组“;第一个参数必须是字符串或缓冲区;
- Javascript:在对象数组中找到匹配项并移动到第一个位置
- 如何获取数组第一个元素的范围
- 在 JQuery 验证中验证多个“数组命名”文件输入和下拉列表
- 为什么正面展望不能作为第一个捕获组工作
- Javascript正则表达式忽略第一个捕获组
- 如何使node.js中的regex返回第一个匹配组
- 如何按第一个子数组值对数组(2D 数组)进行排序