如何按照 JSLint 搜索嵌套对象

How to search nested object by following JSLint

我的对象结构如下,我想找到具有所提供 ID 的产品。

0 :{
   id: 0,
   title: 'xxxx',
   url: "www.test.com"
   quantity: 100
},
1 :{
   id: 10,
   title: 'xxxx',
   url: "www.test.com"
   quantity: 100
},
// and so on...

为了在对象中搜索嵌套属性,我编写了以下函数:

export const selectProductById = (state, productId) => {
   const obj_index = Object.keys(state.products).find(function(idx) {
      if (state.products[idx].id == productId) {
         return idx;
      }
   }

   return state.products[obj_index]
}

这行得通,但在编译我的 React 应用程序期间,我总是会收到警告。 Expected '===' and instead saw '=='

但是如果我将其更改为 === 代码将不再有效,有谁知道如何更改它以使其遵循 JSLint 规则?

听起来 productId 不是数字。首先将其转换为数字:

if (state.products[idx].id === Number(productId)) {

但是你应该 return 来自 .find 回调的真值或假值, 而不是 你正在迭代的东西(因为你可能不会确定它是真还是假,这可能会造成混淆)。 Return === 比较的结果改为:

const { products } = state;
const obj_index = Object.keys(products).find(
  key => products[key].id === Number(productId)
);