【问题标题】:Remove string Item from array从数组中删除字符串项
【发布时间】:2017-02-10 13:30:23
【问题描述】:

我有一个数组,字符串和数组同名“item”,一个实例是数组,另一个是数组中的字符串,我想从数组中删除整个“item”字符串

数组;

//JSON



 [{
          "id":"109",
          "text":"dashboard",
          "items":[ //to be ignored
             {
                "id":"1",
                "text":"financial_dashboard",
                "items":"109" //to be deleted
             },
             {
                "id":"108",
                "text":"project_dashboard",
                "items":"109" //to be deleted
             }
          ]
       }]


//Array PHP
(
    [0] => Array
        (
            [id] => 109
            [expanded] =>  true
            [text] => Dashboard
            [items] => Array  //to be ignored
                (
                    [0] => Array
                        (
                            [id] => 1
                            [expanded] =>  true
                            [text] => Financial Dashboard
                            [items] => 109  //to be deleted
                        )

                    [1] => Array
                        (
                            [id] => 108
                            [expanded] =>  true
                            [text] => Project Dashboard
                            [items] => 109  //to be deleted
                        )

                )

        ))

有什么建议吗?

【问题讨论】:

  • 这是一个 JSON,对吧?
  • 你必须知道数组是如何工作的,这个多维数组你可以通过delete来删除它:array[0][0], array[0][1]
  • for (i = 0; i < arr.length; i++) { for (j = 0; j < arr[i].items.length; j++) {arr[i].items[j].items = undefined}

标签: javascript php arrays json multidimensional-array


【解决方案1】:

您可以按如下方式使用两个嵌套地图;

var arr = [{
      "id":"109",
      "text":"dashboard",
      "items":[ //to be ignored
         {
            "id":"1",
            "text":"financial_dashboard",
            "items":"109" //to be deleted
         },
         {
            "id":"108",
            "text":"project_dashboard",
            "items":"109" //to be deleted
         }
      ]
   }];
   
function delNestedItems(a){
 return a.map(o => (o.items.map(q => (delete q.items,q)),o));
}

console.log(delNestedItems(arr))

【讨论】:

    【解决方案2】:

    你必须知道数组是如何工作的,这个多维数组你可以通过 delete 来删除它:array[0][0] 和 array[0][1]

    unset($a[0][0]);
    unset($a[0][1]);
    

    【讨论】:

      【解决方案3】:

      您可以使用这样的递归 PHP 函数:

      function removeItems(&$arr) {
          if (!is_array($arr)) return;
          if (isset($arr["items"]) && is_string($arr["items"])) unset($arr["items"]);
          foreach ($arr as &$value ) removeItems($value);
      }
      

      这样称呼它:

      removeItems($arr);
      

      查看它在eval.in 上运行。

      输出是:

      Array
      (
          [0] => Array
              (
                  [id] => 109
                  [text] => dashboard
                  [items] => Array
                      (
                          [0] => Array
                              (
                                  [id] => 1
                                  [text] => financial_dashboard
                              )
      
                          [1] => Array
                              (
                                  [id] => 108
                                  [text] => project_dashboard
                              )
      
                      )
      
              )
      
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        • 1970-01-01
        • 1970-01-01
        • 2013-03-02
        • 1970-01-01
        相关资源
        最近更新 更多