Если у вас есть 3 массива, как это:
[{ "id":1, "name":"Bob", "data":1},{ "id":2, "name":"Fred", "data":2 }]
Просто сделайте:
function combine() {
var ar = [];
return ar.concat.apply(ar, arguments).sort(function (a, b) {
var aName = a.NAME;
var bName = b.NAME;
if (aName < bName) {
return -1;
} else if (aName == bName) {
return 0;
} else {
return 1;
};
});
};
Тогда назовите это как:
var jointArrays = combine(array1, array2, array3, ...);
Однако, если ваш JSON выглядит так:
json[0]['DATA'][array_1]
json[0]['DATA'][array_2]
json[0]['DATA'][array_3]
Вы можете просто определить combine()
следующим образом, что будет удобнее:
function combine(arrays) {
var ar = [];
return ar.concat.apply(ar, arrays).sort(function (a, b) {
var aName = a.NAME;
var bName = b.NAME;
if (aName < bName) {
return -1;
} else if (aName == bName) {
return 0;
} else {
return 1;
};
});
};
Тогда назовите это как:
var jointArrays = combine(json[0].DATA);
Если вам нужен массив только имен, а не объектов, используйте следующее:
function combine(arrays) {
var ar = [],
ret = [];
ar = ar.concat.apply(ar, arrays);
for (var i=0;i<ar.length;i++) {
ret.push(ar.NAME);
};
return ret.sort();
};
Javascript чувствителен к регистру; убедитесь, что это DATA
, а не data
, а NAME
и не name
.
Теперь немного по хозяйству.
В вашем примере обе ваши переменные-счетчики объявляются как "подразумеваемые глобальные переменные", потому что вы не ставите перед ними префикс var
( и подразумеваемые глобальные значения неверны ). Вы должны использовать:
for (var i=0;i<something.length;i++) {
//
};
Вместо пренебрежения var
.
Также "{}" создает объект. «[]» создает массив. Javascript не поддерживает ассоциативный массив; например, массив с ключами, которые являются чем угодно, кроме числа. То, что вы возвращаете в JSON, это массив объектов
«Квадратная запись» и «точечная запись» являются взаимозаменяемыми. object["one"]
эквивалентно object.one
Квадратная запись обычно используется, когда ключ хранится как переменная или когда вы обращаетесь к массиву.
var key = "one";
object[key]
Надеюсь, это поможет.