JQ:查找具有特定属性值的对象的数组索引

时间:2017-05-19 09:28:21

标签: arrays select indexing key jq

我有以下内容:

var columns = dtx.Rows.OfType<DataRow>().Select((r, i) => new {Row = r, Group = i >= ((dtx.Rows.Count / 2) + (dtx.Rows.Count % 2))}).GroupBy(r => r.Group);

foreach (var group in columns)
{
    strAmen += @"<ul class='col-md-6'>";

    foreach (DataRow dr in group.Select(g => g.Row))
    {
        strAmen += "<li class='enabled'>" + dr["amen"].ToString() + "</li>";
    }

    strAmen += @"</ul>";
}

我需要找到属性“Name”中没有“app”的所有数组对象的数组索引。

我尝试使用“select”和“keys”的组合,但这不起作用:

ROUNDUP(AVERAGE(IF(RangeName1=1;RangeName2));2)*100&" %."

2 个答案:

答案 0 :(得分:3)

以下是众多可能性中的一种:

.arr | range(0;length) as $i | select(.[$i].Name != "app") | $i

稍微简短但效率较低:

.arr | to_entries[] | select(.value.Name != "app") | .key

如果你渴望使用for-style循环,或者你想要想一些事情:

foreach .arr[] as $o (-1; .+1; select($o.Name != "app"))

答案 1 :(得分:0)

这是一个使用 tostream 的解决方案。

      tostream
    | if   .[0][-1] == "Name" and .[1] == "app"
      then .[0][-2]
      else  empty
      end