如何按照 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)
);
我的对象结构如下,我想找到具有所提供 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)
);