如何传递数组中的第一项

时间:2017-12-13 12:31:44

标签: jquery arrays

我有以下功能

function getItems(source, debpth, parent) {
  var children = source; //source gets all my array data
  console.log(children);
  var nestedlist = $('<div></div>');
  if (children && children.length > 0) //in here its passing all the items.what i want to do is only pass a specific array
  {
    getLinks(nestedlist, children, ++debpth, parent); //gets all my data and passes it to css styling
  }
  return nestedlist.children().length > 0 ? nestedlist : null;
}

如何传递只有TypeCode为&#39; HOR&#39;?

的数组

这是我source

的输出
{
  __type: "TreeNode:#Entities",
  TypeCode: "HOR",
  TypeID: "1",
  TypeName: "Home",
  Name: "test",
  …
}

它有多个阵列但我只想要上面的那个。

4 个答案:

答案 0 :(得分:1)

您可以在函数开头使用jQuery的grep

var children = $.grep(source, function(c) {
    return c.TypeCode == "HOR";
});

children将是一个数组,其元素只是source的对象,TypeCode设置为HOR

原始数组(source)将不受影响。

请注意,上述代码假定source每个元素都是一个名为TypeCode的属性。

答案 1 :(得分:1)

您可以使用以下函数执行此操作,该函数使用$ .map进行转换和进一步条件检查

function getItems(source, debpth, parent) {
  var children = $.map(source, function(value, index) {
                      return [value];
                 });//source gets all my array data

  var nestedlist = $('<div></div>');
  if (children && children.length > 0) //in here its passing all the items.what i want to do is only pass a specific array
  {
    for(item in children)
    {

      if(children[item] == "HOR")
      {
         //console.log("send"+source);
         getLinks(nestedlist, source , ++debpth, parent); //gets all my data and passes it to css styling
      }

    }

  }
  return nestedlist.children().length > 0 ? nestedlist : null;
}

答案 2 :(得分:0)

看一下我为你创建的这个例子,

var myarr = [{a:'1'},{a:'2'},{a:'2'},{a:'3'}];
var finalArr = myarr.filter(function(k,v){
                               if(k.a==2){return true;}
                               else{return false;}});
console.log(finalArr);// this will print an array made up of a==2

所以你可以用同样的方式改变你的来源。

var newSource = source.filter(function(k,v){
                       if(k.TypeCode =='HOR'){
                          return true;
                        } else { return false;}
                });

现在你的newSource数组只有TypeCode为&#34; HOR&#34;的对象。

答案 3 :(得分:0)

我不确定这是否适合您。根据我的理解,您可以编写一个函数来返回具有Typecode =“HOR”的数组。您可以在传递给下面的函数后将此源发送到函数(需要改进)

function filterJsonArray(source) {
    $.each(source, function(key, val) {
       if(val.TypeCode === "HOR") {
           return value;
       }
    });
}