在与数组中的名称匹配的行之后的数组中插入一行

时间:2014-02-26 18:33:38

标签: javascript jquery

我有一个javascript数组,我需要在javascript中检测名称,然后在数组中的该项后立即插入。首选jQuery和javascript解决方案。

var arrayExample = 
[{"name":"Test1","id":[1]},
{"name":"Test2","id":[2]},
{"name":"Test3","id":[3]},
{"name":"Test4","id":[4]},
{"name":"Test5","id":[5]}];

我想检测“Test3”,然后插入这个新数组:{“name”:“Test3.0001”,“id”:[3,6]}。

使用this technique但希望添加一个检测名称的函数,并使用jQuery自动拆分或推入新数组。

3 个答案:

答案 0 :(得分:2)

最简单的方法是遍历数组,然后在找到要查找的名称时插入项目。像这样的东西应该这样做:

function insertAtPoint(arr, item, searchTerm) {
    for(var i = 0, len = arr.length; i<len; i++) {
        if(arr[i].name === searchTerm) {
            arr.splice(i, 0, item);
            return; // we've already found what we're looking for, there's no need to iterate the rest of the array
        }
    }
}

然后你会这样称呼它:

insertAtPoint(arrayExample, {name: "Test3.0001", id: [3, 6]}, "Test3"); // I've fudged this object because your example was invalid JS

答案 1 :(得分:2)

试试这个,

function insertItem(obj,searchTerm){
    $.each(arrayExample,function(i,item){
      if(item.name == searchTerm){
           arrayExample.splice(i+1,0,obj); 
          return false;
      }
    });
}

insertItem({"name":"Test3.0001","id":[3,6]},"Test3");

FIDDLE

答案 2 :(得分:1)

无需拼接,您可以通过引用修改对象 试试这个:

var modifyId = function(arr, idArr, term) { arr.forEach(function(item){ if(item.name == term) { item.id = idArr; } }) }

你可以这样调用这个函数:     modifyId(arrayExample, [2,4,5], 'Test1')