从对象集中获取三个值

时间:2018-09-07 17:24:10

标签: javascript object

尝试了多种方法后,我得出的结论是我可能只是没有以正确的方式看待这个问题。所以我决定在这里问。

我正在尝试获取用户的_id,并且在该对象的内部还有一个visits标签,我需要postIdvisitCount

这些是我的尝试:

this.analyticsService.getClicks();
    this.userClicksSub = this.analyticsService
      .getUserAnalyticsClicks()
      .subscribe((userClicks: Clicks[]) => {
        this.userClicks = userClicks;
        console.log(this.userClicks);
        // const visits = this.userClicks['visits'];
        // console.log(visits);
      //   for (const item of this.userClicks) {
      //      const visits = item.visitCount;
      //      const visits = item.visitCount['visits'];
      //      const visits = item['visits'];
      //      const postId = visits[i]['postId'];
      //     console.log(item['visitCount']);
      //  }
        // this.userId.push(this.userClicks);
        // console.log(this.userId);
        // console.log(this.userId.user[1]);
        // console.log(this.userClicks.user.user); //
        // console.log('test', this.userClicks[2]);
}); 

console.log(this.userClicks);给了我这个:

enter image description here

正在努力访问用户的访问标签值。

我有此表,需要用结果填充:

<th>{{ userclick._id }}</th>

<th>{{ userclick.postId }}</th>

<th>{{ userclick.visitCount }}</th>

它将遍历结果并相应显示。

4 个答案:

答案 0 :(得分:2)

我相信您在嵌套值潜水时只需要多一点安慰!

有两个可以嵌套更多值的东西:ArrayObject。深入研究Array时,您将提供一个数字索引:arr[12]将导致Array中的第13个值(由于从0开始的索引)。深入研究Object时,通常可以使用点符号:obj.innerProperty为您提供obj的“ innerProperty”。

您要处理的根对象this.userClicksArray。因此,如果要访问内部项目,则需要指定一个数字索引。例如this.userClicks[2]。我发现您已尝试执行this.userClicks['visits'],但由于this.userClicks没有“ visits”属性,该方法无法正常工作。 intead this.userClicks 中的每个项目都具有您要查找的“ visits”属性。

如果要将相同的操作应用于this.userClicks中的所有项目,则需要使用某种循环。

例如一个简单的for循环:

for (let i = 0; i < this.userClicks.length; i++) {
  let currentClick = this.userClicks[i];
  // do something with `currentClick`
}

例如声明式forEach

this.userClicks.forEach(currentClick => {
  // do something with `currentClick`
});

答案 1 :(得分:1)

由于存在嵌套数组,您需要迭代两次

module AddEight(A, B, Cin, Cout, Sum);

output Cout;
output [7:0] Sum;
input Cin;
input [7:0] A, B;

wire c0, c1, c2, c3, c4, c5, c6;

adder A0 (Sum[0], Cin, A[0], B[0], c0);
adder A1 (Sum[1], Cin, A[1], B[1], c1);
adder A2 (Sum[2], Cin, A[2], B[2], c2);
adder A3 (Sum[3], Cin, A[3], B[3], c3);
adder A4 (Sum[4], Cin, A[4], B[4], c4);
adder A5 (Sum[5], Cin, A[5], B[5], c5);
adder A6 (Sum[6], Cin, A[6], B[6], c6);
adder A7 (Sum[7], Cin, A[7], B[7], Cout);

endmodule

module adder(output Sum, input Cin, A, B);
// adder
assign Sum = A ^ B ^ Cin;
assign Cout = (A & B) | (B & Cin) | (A & Cin);

endmodule

答案 2 :(得分:0)

在您的for循环中,您可以使用以下方法解决问题:

item.user.visit[whatever index you want]._id

答案 3 :(得分:0)

再试一次: var infos = userClicks.map(user => user.visits.map(({_id, postId}) => ({id: _id, postId}))).reduce((result, currentValue) => result.concat(currentValue), []);

infos.forEach(info => console.log(<th>${info.id}</th><th>${info.postId}</th><th>${info.visitCount}</th>))