Jeśli chcesz połączyć, czasem trzeba splatać również. Wypróbuj to:
var countryArray = [{
"country" : "Indonesia",
"state" : ["DKI","Bali"],
},
{
"country" : "Malaysia",
"state" : ["Penang","Johor"],
}];
Do scalania z przychodzącymi nowymi danymi;
var newArr = [{ "country" : "Malaysia", "state" : ["Kelantan"] }];
MergeArray(countryArray,newArr);
console.table(countryArray);
Aby splajtować dane przychodzące;
var DelArray = [{ "country" : "Malaysia", "state" : ["Penang"] }];
SpliceArray(countryArray,DelArray);
console.table(countryArray);
i powiązana funkcja;
function MergeArray(countryArray,newArr) {
var a = 0;
$.each(newArr, function (key, data1) {
var b = 0;
$.each(countryArray, function (key, data2) {
if(data1.country == data2.country) { // match the same country
countryArray[b]["state"] = countryArray[b]["state"].concat(newArr[a]["state"]);
}
b++; });
a++; });
}
function SpliceArray(countryArray,DelArray) {
var a=0;
$.each(DelArray, function (key, data1) {
var b=0;
$.each(countryArray, function (key, data2) {
if(data1.country == data2.country) { // get same country
console.log(countryArray[b]["state"]) // ["Penang", "Johor", "Kelantan"]
for(var c=0; c < countryArray[b]["state"].length; c++){ // loop in countryArray state[]
console.log(DelArray[a]['state']); // to remove : ["Penang"]
if(countryArray[b]["state"][c] == DelArray[a]['state']) {
countryArray[b]["state"].splice(c,1); // remove ["Penang"]
}
}
}
b++;
});
a++;
});
}
nadzieję pomogą
który wydaje niepotrzebnie trudne i nie konstruktywne. To nie jest proste pytanie - nie mogłem znaleźć prostej odpowiedzi po nieco dłuższym wyszukiwaniu - i nie należy zakładać, że nie podjęto żadnej próby. Najwyraźniej jest nowa na stronie i jest początkująca - zamiast potencjalnie alienować ją, może mógłbyś wyjaśnić, co mogłaby zrobić inaczej w przyszłości, na przykład dzieląc się tym, co już wypróbowała? –
Dziękuję za komentarze, ale nigdy nie myśl, że nie próbowałem niczego. Wiele próbowałem, w tym concat, push i więcej. Wyszukaj dowolny wpis, który pomoże, ale nie udało mi się rozwiązać problemu. Dlatego pytam na tym forum. A mając taki scenariusz, jak w moim pytaniu, nie oznacza to, że muszę dużo robić? Przy okazji, wszyscy jesteście mili. – Yusnee