JSONObject jsonObject = jsonArray1.getJSONObject(i);
Iterator<String> iter = jsonObject.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
JSONArray jsonArray=jsonObject.getJSONArray(key);
} catch (JSONException e) {
// Something went wrong!
}
}
如果我有一个如上所示的数组,我需要根据字符串中的子字符串值对数组进行排序 - 即一,二,三.., 解决问题的最佳方法是什么?
我的最终结果应该是
var arr = ["This is three", "This is four", "This is one", "This is two", ...];
答案 0 :(得分:2)
此解决方案使用带数字的数组,并在字符串中查找数字,并返回索引以进行排序。
对于较大的阵列,我建议使用sorting with map。
var sortedArr = ["This is four", "This is two", "This is one", "This is three"];
sortedArr.sort(function (a, b) {
function getNumber(s) {
var index = -1;
['one', 'two', 'three', 'four'].some(function (c, i) {
if (~s.indexOf(c)) {
index = i;
return true;
}
});
return index;
}
return getNumber(a) - getNumber(b);
});
document.write('<pre>' + JSON.stringify(sortedArr, 0, 4) + '</pre>');
编辑:
~
是bitwise not operator。它非常适合与indexOf()一起使用,因为indexOf
如果找到索引0 ... n
则返回,如果不是-1
则返回:value ~value boolean -1 => 0 => false 0 => -1 => true 1 => -2 => true 2 => -3 => true and so on