我在一些for_each循环中创建了具有user_images.push({'href' : value.href, 'title' : value.title });
代码的JSON数组。我想知道如何在数组中首先包含'href' : my_href
之类的元素?
答案 0 :(得分:2)
你没有“JSON数组”,你有一个JavaScript数组(JSON是数据的字符串表示)。
但无论如何,你似乎在说的是你有一个数组user_images
,它包含每个都有href
属性的对象,并且你想要使它成为一个对象特定的href
属性是数组中的第一个属性。您要查找的特定值存储在名为my_href
的变量中。如果我做对了,请继续阅读...
我猜你当前的代码看起来有点像这样:
var user_images = [];
for (value in someObjectThatYouDoNotShowInYourQuestion)
user_images.push({'href' : value.href, 'title' : value.title });
要查找数组中href
等于变量my_href
的项,您只需循环遍历数组,直到找到该项,然后使用.splice()
method删除它从当前位置和unshift()
method将它添加到数组的开头:
var item,
i;
for (i = 0; i < user_images.length; i++) {
if (user_images[i].href === my_href) {
item = user_images[i];
user_images.splice(i,1);
user_images.unshift(item);
break;
}
}
如果未找到匹配项,则数组将保持不变。
注意:您实际上并不需要我的代码中显示的item
变量。我把它放在可读性中,显而易见的是你存储了对你正在寻找的对象的引用,然后删除它,然后把它放在数组的开头,但是给出了.splice()
方法返回已删除项的数组,您可以使用以下单行替换for
循环中的这三行:
user_images.unshift(user_images.splice(i,1)[0]);
答案 1 :(得分:2)
遍历数组以找到具有特定值的对象,然后将其从数组中删除并作为第一个插入:
$.each( user_images, function( index ) {
if( this.href === my_href ) {
user_images.unshift( user_images.splice( index, 1 )[0] );
return false; //stop the loop
}
});
user_images[0].href
现在应该是my_href