【问题标题】:How to check if an Array is present in a Javascript object如何检查 Javascript 对象中是否存在数组
【发布时间】:2019-06-10 08:45:58
【问题描述】:

我想知道一个数组是否存在于一个 JavaScript 对象中。

虚拟示例:

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

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

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

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

任何帮助都会很棒。

【问题讨论】:

  • "目前我正在使用一种解决方案,即迭代每个键并使用 Array.isArray(key) 检查每个键是否存在数组。" 这听起来好的。它有什么问题?
  • 我想知道 Javascript 中是否有任何可用的方法可以用来检查数组是否存在而不是迭代每个键
  • 不,没有。
  • 好的,非常感谢。我在一次采访中被问到这个问题。

标签: javascript arrays object ecmascript-6


【解决方案1】:

使用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);

【讨论】:

    【解决方案2】:
    if (dummyObject.arr){
    console.log('arr is present')
    }else{
    console.log('arr is not present')
    }
    

    【讨论】:

    • 似乎OP想检查dummyObject.arr是否是一个数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多