将对象的属性访问到嵌套数组中-Javascript

将对象的属性访问到嵌套数组中-Javascript,javascript,arrays,loops,object,nested,Javascript,Arrays,Loops,Object,Nested,我想从以下数组中检索所有文本(文本1、文本2…): [ { "reviews": [ { "_id": "5e84239d6e24358b50f3fe4e", "text": "My text 1" }, { "_id": "5e8423a46e24358b50f3fe4f", "text": "My text 2" } ] }, {

我想从以下数组中检索所有文本(文本1、文本2…):

[
    {
    "reviews": 
    [
      {
        "_id": "5e84239d6e24358b50f3fe4e",
        "text": "My text 1"
      },
      {
        "_id": "5e8423a46e24358b50f3fe4f",
        "text": "My text 2"
      }
    ]
  },
  {
    "reviews": 
    [
      {
        "_id": "5e84239d6e24358b50f3fe4e",
        "text": "My text 3"
      },
      {
        "_id": "5e8423a46e24358b50f3fe4f",
        "text": "My text 4"
      }
    ]
  },
  {
    "reviews": 
    [
      {
        "_id": "5e84239d6e24358b50f3fe4e",
        "text": "My text 5"
      },
      {
        "_id": "5e8423a46e24358b50f3fe4f",
        "text": "My text 6"
      }
    ]
  }
]  
此数组存储在名为stores的变量中

我尝试了以下方法:

const list text=stores.map(count=>count.reviews.text
/[null,null,null]
const list text=stores.map((count,i)=>count.reviews[i].text)
//无法读取未定义的属性“text”
const listText=stores.forEach((key,i)=>key.reviews[i].text)
//无法读取未定义的属性“text”

你能帮帮我吗, 非常感谢

使用,您可以迭代每个对象,然后将每个对象的reviews数组
.map()
转换为包含文本属性的数组。
.flatMap()
允许您将所有内部映射数组结果展平到一个较大的结果数组中

const stores=[{“reviews”:[{“id”:“5e84239d6e24358b50f3fe4e”,“text”:“我的文本1”},{“id”:“5e8423a46e24358b50f3fe4f”,“text”:“我的文本2”},{“reviews”:[{“id”:“5e84239d6e24358b50f3fe4e”,“text”:“我的文本3”},{“id”:“5e8423a46e24358b50f3fe4f”,“text”:“我的文本4”},{“reviews”},{“5e84239d6e24358b50f3fe4e”,“文本”:“我的文本5”},{“\u id”:“5e8423a46e24358b50f3fe4f”,“文本”:“我的文本6”}];
const res=stores.flatMap((o)=>o.reviews.map(({text})=>text));
console.log(res);
使用,您可以迭代每个对象,然后将每个对象的reviews数组
.map()
转换为包含文本属性的数组。
.flatMap()
允许您将所有内部映射数组结果展平到一个更大的结果数组中

const stores=[{“reviews”:[{“id”:“5e84239d6e24358b50f3fe4e”,“text”:“我的文本1”},{“id”:“5e8423a46e24358b50f3fe4f”,“text”:“我的文本2”}},{“reviews”:[{“id”:“5e84239d6e24358b50f3fe4e”,“text”:“我的文本3”},{“id”:“5e8423a46e24358b50f3fe4f”,“text”:“我的文本4”},{“reviews”},{5e84239d6e24358b50f3fe4e,“文本”:“我的文本5”},{“\u id”:“5e8423a46e24358b50f3fe4f”,“文本”:“我的文本6”}];
const res=stores.flatMap((o)=>o.reviews.map(({text})=>text));

console.log(res);
您不能使用
count.reviews.text
因为reviews是一个数组,所以您还应该迭代查看:

const数据=[
{
“审查”:
[
{
“_id”:“5e84239d6e24358b50f3fe4e”,
“文本”:“我的文本1”
},
{
“_id”:“5e8423a46e24358b50f3fe4f”,
“文本”:“我的文本2”
}
]
},
{
“审查”:
[
{
“_id”:“5e84239d6e24358b50f3fe4e”,
“文本”:“我的文本3”
},
{
“_id”:“5e8423a46e24358b50f3fe4f”,
“文本”:“我的文本4”
}
]
},
{
“审查”:
[
{
“_id”:“5e84239d6e24358b50f3fe4e”,
“文本”:“我的文本5”
},
{
“_id”:“5e8423a46e24358b50f3fe4f”,
“文本”:“我的文本6”
}
]
}
]  
const listText=data.reduce((acc,current)=>acc.concat(current.reviews.map(it=>it.text)),[])

console.log(listText)
您不能使用
count.reviews.text
因为reviews是一个数组,所以您还应该迭代查看:

const数据=[
{
“审查”:
[
{
“_id”:“5e84239d6e24358b50f3fe4e”,
“文本”:“我的文本1”
},
{
“_id”:“5e8423a46e24358b50f3fe4f”,
“文本”:“我的文本2”
}
]
},
{
“审查”:
[
{
“_id”:“5e84239d6e24358b50f3fe4e”,
“文本”:“我的文本3”
},
{
“_id”:“5e8423a46e24358b50f3fe4f”,
“文本”:“我的文本4”
}
]
},
{
“审查”:
[
{
“_id”:“5e84239d6e24358b50f3fe4e”,
“文本”:“我的文本5”
},
{
“_id”:“5e8423a46e24358b50f3fe4f”,
“文本”:“我的文本6”
}
]
}
]  
const listText=data.reduce((acc,current)=>acc.concat(current.reviews.map(it=>it.text)),[])
console.log(listText)
尝试以下操作:

let output = [];
            input.map(function (item_1) {
                item_1.reviews.map(function (item_2) {
                  output.push(item_2.text);
                })
            });
请尝试以下操作:

let output = [];
            input.map(function (item_1) {
                item_1.reviews.map(function (item_2) {
                  output.push(item_2.text);
                })
            });
地图和平面图:

const data=[
{“评论”:[{“_id”:“5e84239d6e24358b50f3fe4e”,“文本”:“我的文本1”},{“_id”:“5e8423a46e24358b50f3fe4f”,“文本”:“我的文本2”}],
{“评论”:[{“_id”:“5e84239d6e24358b50f3fe4e”,“文本”:“我的文本3”},{“_id”:“5e8423a46e24358b50f3fe4f”,“文本”:“我的文本4”}],
{“评论”:[{“_id”:“5e84239d6e24358b50f3fe4e”,“文本”:“我的文本5”},{“_id”:“5e8423a46e24358b50f3fe4f”,“文本”:“我的文本6”}]
console.log(
data.map(items=>items.reviews.map(review=>review.text)).flat()
)
地图和平面图:

const data=[
{“评论”:[{“_id”:“5e84239d6e24358b50f3fe4e”,“文本”:“我的文本1”},{“_id”:“5e8423a46e24358b50f3fe4f”,“文本”:“我的文本2”}],
{“评论”:[{“_id”:“5e84239d6e24358b50f3fe4e”,“文本”:“我的文本3”},{“_id”:“5e8423a46e24358b50f3fe4f”,“文本”:“我的文本4”}],
{“评论”:[{“_id”:“5e84239d6e24358b50f3fe4e”,“文本”:“我的文本5”},{“_id”:“5e8423a46e24358b50f3fe4f”,“文本”:“我的文本6”}]
console.log(
data.map(items=>items.reviews.map(review=>review.text)).flat()

)
谢谢@Abhishek Kulkarni:)谢谢@Abhishek Kulkarni:)太好了,它在@Nick Parsons.You's day:)很好的解释,完美的解释,在@Nick Parsons.You's day:)很好的解释,不用
.flat()
它可以工作,即使我将数组放入数组中。但是当使用
.flat()
,我记录
平面不是一个函数
。感谢@mplungjan没有使用
.flat()
它可以工作,即使我将数组放入数组中。但是当使用
.flat()时
,我的log
flat不是一个函数
。谢谢@mplungjanYes,它工作得很好:)谢谢。如果我只想从数组中选取一些值而不是其他值呢?在我的示例中,我只有
\u id
文本
。但是假设我还有其他属性,例如
照片
slug
..我如何确保只选择
\u id
文本
,而不选择其他属性?请clari