Javascript 需要帮助编写一个函数,以便在键不存在时返回空数组';t作为数组中的对象存在

Javascript 需要帮助编写一个函数,以便在键不存在时返回空数组';t作为数组中的对象存在,javascript,arrays,reactjs,shopify,gatsby,Javascript,Arrays,Reactjs,Shopify,Gatsby,我正在盖茨比/React中开发一款无头Shopify应用程序。我需要一些帮助来处理我从Shopify得到的数据 以下是数据的示例: product.options = [ { name: 'Size', values: ['S', 'M', 'L', 'XL', 'XXL'], }, { name: 'Colour', values: ['Terrazzo Berry'], }, ]; 我想为颜色创建一个可变值键 const colours =

我正在盖茨比/React中开发一款无头Shopify应用程序。我需要一些帮助来处理我从Shopify得到的数据

以下是数据的示例:

product.options = [
  {
    name: 'Size',
    values: ['S', 'M', 'L', 'XL', 'XXL'],
  },
  {
    name: 'Colour',
    values: ['Terrazzo Berry'],
  },
];
我想为颜色创建一个可变值键

const colours =
    product.options.find((option) => option.name.toLowerCase() === 'colour')
      .values || [];
唯一的问题是,如果名为“颜色”的对象中没有键,我会得到以下错误:

TypeError: undefined is not an object (evaluating 'product.options.find(function (option) {
    return option.name.toLowerCase() === 'colour';
  }).values')

如果我正在搜索的键不存在,有人能帮我写一些返回空对象的代码吗在访问
.values
键之前,您需要设置默认值

const colours =
    (product.options.find((option) => option.name.toLowerCase() === 'colour')
      || {values: []}).values;

      // ^^^^^^^^^^^^
      // You can use whatever value you want, i've use array as default value
我的代码有什么问题?


如果在代码中找不到键,则函数返回
未定义
,并且您具有
属性访问权限,因此您会出现错误

在访问
键之前,您需要设置默认值

const colours =
    (product.options.find((option) => option.name.toLowerCase() === 'colour')
      || {values: []}).values;

      // ^^^^^^^^^^^^
      // You can use whatever value you want, i've use array as default value
我的代码有什么问题?


如果在代码中找不到键
find
函数将返回
undefined
,并且您具有
.values
属性访问权限,因此您会出现一个错误

只是一个注释,如果成功,您的代码不会创建新数组,而是使用sameI,最后使用新的可选链接方法进行轻微更改
const colors=product.options.find((option)=>option.name.toLowerCase()==='color')?。值| |[]它永远不能用这种方式工作,,“array find”返回数组元素上的指针,而不是副本,只是一个注释,如果成功,代码不会创建新数组,而是使用sameI,最后使用新的可选链接方法进行了轻微更改
const colors=product.options.find((option)=>option.name.toLowerCase()==='color')?。值| |[]它永远不能用这种方式工作,、array find返回数组元素上的指针,而不是副本