2

我目前正在使用 JavaScript 和 jQuery 在 Qlik Sense 中构建混搭。我做了一些数据选择,并将它们放在一个变量对象中:

var CurrentSelec = app1.selectionState().selections;
console.log(CurrentSelec);`
console.log(typeof CurrentSelec);

这是我在浏览器控制台上得到的:

当前选择对象

我试图在 Foreach 中显示 qSelected 值:

我尝试过使用 Javascript:

for(var index in CurrentSelec) { 
    console.log(index.qSelected);
}

我尝试过使用 jQuery:

$.each(CurrentSelec, function(i, index) {
  console.log(index.qSelected)
});

但是我的浏览器控制台不显示我的foreach的日志。

你知道如何正确地创建一个对象的foreach并在浏览器控制台上显示它的内容吗?

问候。

4

10 回答 10

6

您可以使用 Object.keys() 方法,该方法返回对象中的键数组。然后我们通过 Array.forEach() 方法运行它。例如

Object.keys(lunch).forEach(function (item) {
    console.log(item); // key
    console.log(lunch[item]); // value
});
于 2020-01-18T05:50:29.827 回答
3

您的 CurrentSelec 变量是一个数组,而不是一个普通的对象,所以只需使用它的forEach方法:

CurrentSelec.forEach(function (el) {
    console.log(el.qSelected);
});
于 2017-07-07T13:29:32.330 回答
0

此处缺少一些信息(请重命名为 'currentSelec),但请执行以下操作:

CurrentSelec.forEach(function(item){
         console.log(item.qSelected)
    })

您所做的是迭代数组的键,而不是值。

于 2017-07-07T13:35:39.353 回答
0

var displayArray = [{id:1,dispName:"abc"},{id:2,dispName:"aaaa"},{id:3,dispName:"bbbb"},{id:4,dispName:"xxxxx"},{id:5,dispName:"www"}]
      displayArray.forEach(obj => {
      console.log(obj)
      });

于 2018-11-14T11:34:24.673 回答
0
for (var index in CurrentSelec[0]) {
 console.log(index.qSelected);
}

尝试这个

于 2017-07-07T13:34:51.727 回答
0

好像你混淆了数组和对象。查看您提供的图片,我认为您有一个包含对象的数组。

//Naming indicates mutliple selections
app1.selectionState().selections; 

遍历数组很容易,也可以访问对象值:

// CurrentSelec = [{qSelected : '1'},{qSelected : '2'}];
CurrentSelec.forEach ( selection => console.log(selection.qSelected) );
于 2017-07-07T13:50:02.683 回答
0

尝试使用下面的代码,看看它是否有效,而不是CurrentSelec使用CurrentSelec[0]

$.each(CurrentSelec[0], function(i, index) {
  console.log(index.qSelected)
});
于 2017-07-07T13:31:01.217 回答
0

在您的 JavaScript 示例中,您错误地浏览了对象。为了通过它,使用[]和你设置的变量。例如,

for (var index in CurrentSelec) {
  console.log(CurrentSelec[index].qSelected);
}

这会选择其中的每个孩子CurrentSelec并打印出其对应的qSelected值。

在您的示例中,当您说 时for (var index in CurrentSelec) {...};,您是在为 ,中的每个孩子CurrentSelec说,设置index = child(其中孩子只是您的CurrentSelec对象的键),然后继续for循环。

因此,当您说 时console.log(index.qSelected),您是在尝试导航到qSelected下的值index,该值永远不会存在。相反,您应该使用循环中收到的每个对象来导航父对象。indexfor

于 2017-07-07T13:30:39.727 回答
0

你可以像这样使用jQuery,

$.each(CurrentSelec, function( key, value ) {
   alert( key + ": " + value );
});

我相信它会有所帮助,

于 2017-07-07T13:37:08.377 回答
0

您使用 javascriptfor in循环迭代对象。

例如CurrentSelec是你的对象。

for(key in CurrentSelec){
    //key is your object's main query.
    //CurrentSelec is your object's nested array if has.
    console.log(key);
    console.log(CurrentSelec[key]);
}
于 2017-07-07T13:27:54.393 回答