我有一个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自动拆分或推入新数组。
答案 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");
答案 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')