我正在映射组件中配置文件中的某些项目,如果某个项目是数组,我想将数组中的每个值都呈现在一起。我正在使用.isArray来检查某项是否为数组,但是当我期望它没有返回值时。
示例配置
items: [
{
text: 'some text',
url: '/some-url.html'
}, {
text: 'some text',
url: '/some-url.html'
}, [
{
text: 'some text',
url: '/some-url.html'
},
{
text: 'some text',
url: '/some-url.html'
}
], {
text: 'some text',
url: '/some-url.html'
}
]
const items = items.filter(item => {
return item.text !== undefined
}).map((item, itemKey) => {
if (item.isArray) return console.log(item);
return (
<Item key={key} item={item.url} />
)
})
我的物品中有一个数组,但没有获取console.log
答案 0 :(得分:4)
isArray
是Array中的一种方法。
如果您在括号内传递的是数组,它将返回 true 或 false 。
Array.isArray([1, 2, 3]); // true or false
在您的情况下,您应该像这样检查它:
const items = items.filter(item => {
return item.text !== undefined
}).map((item, itemKey) => {
if (Array.isArray(item)) return console.log(item);
return (
<Item key={key} item={item.url} />
)
})
DOCS :https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
答案 1 :(得分:0)
const items = items.filter(item => {
return item.text !== undefined
}).map((item, itemKey) => {
if (item.isArray) return console.log(item);
return (
<Item key={key} item={item.url} />
)
})
此代码中有几个问题。首先,对于数组中的所有值,item.isArray
是undefined
。这些项目均没有密钥isArray
。要解决此问题,请将其更改为
Array.isArray(item);
接下来,console.log(item)
返回undefined
。这意味着即使您进行了上述更改,您也会在某些位置获得包含undefined
个元素的列表。
答案 2 :(得分:0)
const items = [
{
text: 'some text',
url: '/some-url.html'
}, {
text: 'some text',
url: '/some-url.html'
}, [
{
text: 'some text',
url: '/some-url.html'
},
{
text: 'some text',
url: '/some-url.html'
}
], {
text: 'some text',
url: '/some-url.html'
}
]
const data = items.filter(item => {
return item.text !== undefined
})
console.log(data) // this line return the following comment
/*[
{
"text": "some text",
"url": "/some-url.html"
},
{
"text": "some text",
"url": "/some-url.html"
},
{
"text": "some text",
"url": "/some-url.html"
}
] */
// So It will never run the if condition in below code because there is no child array in the filtered array.
data.map((item, itemKey) => {
if (Array.isArray(item)) return console.log("I'm an array")
return console.log("I'm not an array")
})