如何检查Javascript对象中是否存在数组

时间:2019-06-10 08:45:58

标签: javascript arrays object ecmascript-6

我想找出JavaScript对象中是否存在数组。

虚拟示例:

给出一个包含数组的Javascript对象。而且我们不知道对象中是否存在数组。

var dummyObject = { 
backgroundcolor: '#000',
 color: '#fff',
 arr: ['1','2','3','4','5','6']
};

现在,我要检查此对象中是否有一个数组,以及是否打印了该数组的所有元素。

目前,我使用一种解决方案,即使用Array.isArray(key)迭代每个键并检查每个键中是否有数组。

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:2)

使用Array.isArray是解决此问题的正确方法。遍历每个键也非常简单。然后,找到项目后,只需将其记录到控制台即可:

var dummyObject = {
  backgroundcolor: '#000',
  color: '#fff',
  arr: ['1', '2', '3', '4', '5', '6']
};

const arr = Object.entries(dummyObject).find(([, v]) => Array.isArray(v));
if (arr) console.log(arr[1]);
.as-console-wrapper { max-height: 100% !important; top: auto; }

如果只希望布尔值确定对象内部是否存在数组,则可以将someObject.values一起使用:

var dummyObject = {
  backgroundcolor: '#000',
  color: '#fff',
  arr: ['1', '2', '3', '4', '5', '6']
};

const arrInObj = Object.values(dummyObject).some(e => Array.isArray(e));
console.log(arrInObj);

如果需要,可以避免使用Array.isArray并检查map属性是否存在(à la code golf):

var dummyObject = {
  backgroundcolor: '#000',
  color: '#fff',
  arr: ['1', '2', '3', '4', '5', '6']
};

const arrInObj = Object.values(dummyObject).some(({ map }) => map);
console.log(arrInObj);

答案 1 :(得分:0)

.d-flex {
  display: flex;
}

.flex-row {
  flex-direction: row;
}

.align-items-start {
  align-items: flex-start;
}

.align-items-center {
  align-items: center;
}

.justify-content-center {
  justify-content: center;
}

.container-block {
  width: 100px;
  height: 100px;
  background: black;
  margin: 0 5px;
}

.m-2 {
  margin: 0.5rem;
}