例如,我有:
var Data = [
{ id_list: 1, name: 'Nick', token: '312312' },
{ id_list: 2, name: 'John', token: '123123' },
]
然后,我想按名称(例如)对该对象进行排序/反转。然后我想要得到这样的东西:
var Data = [
{ id_list: 2, name: 'John', token: '123123' },
{ id_list: 1, name: 'Nick', token: '312312' },
]
现在我想知道对象的索引属性名称='John',以获得属性令牌的值。
我怎么解决这个问题?
因为排序部分已经回答了。我将提出另一种优雅的方法来获取数组中属性的indexOf
你的例子是:
var Data = [
{id_list:1, name:'Nick', token:'312312'},
{id_list:2, name:'John', token:'123123'}
]
你可以:
var index = Data.map(function(e) { return e.name; }).indexOf('Nick');
var数据= [{
id_list: 1、
名称:“尼克”,
令牌:“312312”
},
{
id_list: 2
名称:“约翰”,
令牌:“123123”
}
]
var index = Data.map(函数(e) {
返回e.name;
}) .indexOf(“尼克”);
console.log(索引)
Array.prototype.map在Internet Explorer 7或Internet Explorer 8上不可用。ES5的兼容性
这里是ES6和箭头语法,这更简单:
const index = Data.map(e => e.name).indexOf('Nick');
一个典型的方法
(function(){
if (!Array.prototype.indexOfPropertyValue){
Array.prototype.indexOfPropertyValue = function(prop, value){
for (var index = 0; index < this.length; index++){
if (this[index][prop]){
if (this[index][prop] == value){
return index;
}
}
}
return -1;
}
}
})();
// Usage:
var Data = [
{id_list:1, name:'Nick', token:'312312'}, {id_list:2, name:'John', token:'123123'}];
Data.indexOfPropertyValue('name', 'John'); // Returns 1 (index of array);
Data.indexOfPropertyValue('name', 'Invalid name') // Returns -1 (no result);
var indexOfArray = Data.indexOfPropertyValue('name', 'John');
Data[indexOfArray] // Returns the desired object.
你可以使用数组。使用自定义函数作为参数进行排序,以定义排序机制。
在你的例子中,它会给出:
var Data = [
{id_list:1, name:'Nick',token:'312312'},{id_list:2,name:'John',token:'123123'}
]
Data.sort(function(a, b){
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
});
alert("First name is : " + Data[0].name); // alerts 'John'
alert("Second name is : " + Data[1].name); // alerts 'Nick'
如果a应该在b之前,排序函数必须返回-1;如果a应该在b之后,则返回1;如果两者相等,则返回0。由您在排序函数中定义正确的逻辑对数组进行排序。
错过了你问题的最后一部分,你想知道索引。就像其他人说的那样,你必须循环遍历数组才能找到它。