Javascript 如何对本地存储中的JSON对象进行排序并删除重复项
我在本地存储器中有一个地址列表,存储为JSON对象Javascript 如何对本地存储中的JSON对象进行排序并删除重复项,javascript,sorting,object,Javascript,Sorting,Object,我在本地存储器中有一个地址列表,存储为JSON对象 {"Addresses"[ {"address1":"1111 W Main"}, {"address2":"2222 W Main"}, {"address3":"1111 W Main"}, {"adess4":"3333 Main"} ]}; 我需要对它们进行排序并删除重复项 我可以用数组来实现这一点 var addressList = ['2111 W State', '2111 W State', '1111
{"Addresses"[
{"address1":"1111 W Main"},
{"address2":"2222 W Main"},
{"address3":"1111 W Main"},
{"adess4":"3333 Main"}
]};
我需要对它们进行排序并删除重复项
我可以用数组来实现这一点
var addressList = ['2111 W State', '2111 W State', '1111 W State', '3111 W State'];
var sortedAddressList = addressList.sort();
var results = [];
for (var i = 0; i < addressList.length; i++) {
if (sortedAddressList[i + 1] != sortedAddressList[i]) {
results.push(sortedAddressList[i]);
}
}
alert(results);
var addressList=['2111w State'、'2111w State'、'1111w State'、'3111w State'];
var sortedAddressList=addressList.sort();
var结果=[];
对于(变量i=0;i
如何在不将对象转换为字符串的情况下获得相同的结果 使用Jackson对象映射器,我认为您可以轻松获得带有inputstream或byte[]的地址数组列表,任何您喜欢的类型
只需将其放入java.util.SortedSet,即可完成所有操作。您可以像这样读取并将唯一值放入数组中
var data = {
"Addresses": [{
"address1": "2222 W Main"},
{
"address2": "1111 W Main"},
{
"address3": "1111 W Main"},
{
"adess4": "3333 Main"}]
};
var arr = [];
var address = ['address1', 'address2', 'address3', 'adess4'];
$.each(data.Addresses, function(i, value) {
var val = value[address[i]];
if (arr.indexOf(val) == -1) {
arr.push(val);
}
});
console.log(arr);
arr.sort();
对于初学者,我会将所有键都设置为“地址”:
{“地址”[{“地址”:“1111W主”},{“地址”:“2222W主”},{“地址”:“1111W主”},{“地址”:“3333主”};
在这之后,您可以通过JSON对象循环该特定键,并将这些值存储到一个数组中。最后,您可以使用上面的sort/delete duplicate方法
var addressList = {"Addresses":[{"address":"1111 W Main"},{"address":"2222 W Main"},{"address":"1111 W Main"},{"address":"3333 Main"}]};
var arr = new Array();
for(var i =0; i < addressList.Addresses.length; i++){
arr.push(addressList.Addresses[i].address);
}
var sortedAddressList = arr.sort();
var results = [];
for (var i = 0; i < sortedAddressList.length; i++) {
if (sortedAddressList[i + 1] != sortedAddressList[i]) {
results.push(sortedAddressList[i]);
}
}
alert(results);
var addressList={“Addresses”:[{“address”:“1111 W Main”},{“address”:“2222 W Main”},{“address”:“1111 W Main”},{“address”:“3333 Main”}]};
var arr=新数组();
对于(变量i=0;i
首先,对象属性的命名不是很合理。访问键应该是可预测的,而不是依赖于索引的知识
{"Addresses": [
{"address":"1111 W Main"},
{"address":"2222 W Main"},
{"address":"1111 W Main"},
{"address":"3333 Main"}
]};
因此,此时,您可以使用以前使用的技术,但只需访问“address”
属性即可
var sortedAddressList = data.Addresses.sort(function(a, b) {
return a.address.localeCompare(b.address);
});
var results = [];
for (var i = 0; i < sortedAddressList.length; i++) {
if (sortedAddressList[i + 1].address != sortedAddressList[i].address) {
results.push(sortedAddressList[i]);
}
}
alert(results);
你在找这样的东西吗
var uniqueSortedAddresses = [];
({"Addresses":[
{"address1":"1111 W Main"},
{"address2":"2222 W Main"},
{"address3":"1111 W Main"},
{"address4":"3333 Main"}
]}).Addresses.forEach(function(addressObj) {
var i,address;
for(i in addressObj) {
if(addressObj.hasOwnProperty(i)) {
address = addressObj[i];
if(uniqueSortedAddresses.indexOf(address)==-1){
uniqueSortedAddresses.push(address);
}
}
}
});
uniqueSortedAddresses.sort();
那么,您想对一组对象进行排序吗?请检查为什么每个
“address”
键都有一个数字?“address1”和“address2”等。
?您已经在一个有序的列表中对它们进行了排序。您可以只存储字符串,或者如果您想要一个对象,就给它们一个更可预测的键,如“address”“
。我一直收到一个未定义的错误,使用这个,I+1似乎超过了数组中定义的值?
var uniqueSortedAddresses = [];
({"Addresses":[
{"address1":"1111 W Main"},
{"address2":"2222 W Main"},
{"address3":"1111 W Main"},
{"address4":"3333 Main"}
]}).Addresses.forEach(function(addressObj) {
var i,address;
for(i in addressObj) {
if(addressObj.hasOwnProperty(i)) {
address = addressObj[i];
if(uniqueSortedAddresses.indexOf(address)==-1){
uniqueSortedAddresses.push(address);
}
}
}
});
uniqueSortedAddresses.sort();