Parastoo Ebrahimi
4 سال پیش توسط Parastoo Ebrahimi مطرح شد
3 پاسخ

جدا کردن بخش های مختلف یک آیتم

سلام. من از یک api یک سری اطلاعاته میگیرم که مربوط به لوکیشن میشن. اطلاعات به این فرمت هستن:

01A01
01A02
01A03
01A04
01A05
02A01
02A02
02A03
02A04
02A05
02B01
02B02
02B03
02B04
02B05
03B01
03B02
03B03
03B04
03B05
BACK FRIDGES
JOHN TEST LOC

باید اون رو به ساختار درختی تبدیل کنم. به این صورت که اگر عدد باشن دو بخش اول که عدد هستن سر شاخه باشن و به اسم aisle. حرف وسط به عنوان فرزند و به اسم side. دو تا عدد بعد هم فرزند فرزند و به اسم bay. گاهی اوقات هم یه متن هایی هست مثل دو تای آخری
مثل عکس زیر. ممنون میشم کمکم کنید. @sinashahoveisi @mohsenbostan
side


ثبت پرسش جدید
محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
1

@parastooebrahimi
سلام.
با استفاده از کد زیر می تونید هر کدوم رو جدا کنید :

data.forEach( x => parseInt(x.substring(2,0)) ? converted.push({"asile": x.substring(2,0), "side": x.substring(3,2), "bay": x.slice(-2)}) : null )

Parastoo Ebrahimi
تخصص : front-end developer
@parastooebrahimi 4 سال پیش مطرح شد
0

با تابع زیر انجامش دادم. اینجوری استفاده ازش راحت تره و به غیر از عدد هر هر چیزی باشه تفکیک میکنه

LocationByAisle = () => {
       debugger
        let aisle ;
        let side ;
        let bay ;
        let name="01A01"
        let components;
        if (name) {
            if (/[0-9]+[AB][0-9]+/i.test(name)) {
                let match = /[AB]/i.exec(name);
                if (match != null && match.length == 1) {
                     components = (name.split(/[AB]/i));
                    components.splice(1, 0, match[0]);

                    aisle=parseInt(components[0]);
                    side=components[1];
                    bay=parseInt(components[2]);

                }
            } else if (name.split(' ').length == 3 || name.split('-').length == 3) {
                 components = (name.split(/[ -]+/i));

                aisle=components[0];
               side=components[1];
              bay=components[2];

            }
        };
        //return "AISLE " + parseInt(components[0]) + " - SIDE " + components[1] + " - BAY " + parseInt(components[2]);
        return Components

    }

Parastoo Ebrahimi
تخصص : front-end developer
@parastooebrahimi 4 سال پیش آپدیت شد
0

یه مشکل دیگه که بهش برخوردم اینه که میخوام وقتی آرایه رو میدم به این تابع یه استیتی رو به صورت زیر آپدیت کنه تا بتونم از اون استیت توی لیست درختی استفاده کنم. مثل زیر.

 aisle: [{ value: "Aisle 1", label: "Aisle 01", children: [{ value: "Side A", label: "Side A", children: [{ value: "Bay 1", label: "Bay 1" }] }] }]

ولی اجرا که میگیرم فقط عنصر آخر رو به تعداد عناصر api نشون میده.. چرا؟

 LocationByAisle = () => {
        debugger
        let aisle;
        let side;
        let bay;
        let components;
        let aisles;
        //let name= "03A02"

        this.props.shelfLocationData.forEach(item => {
            if (item.name) {
                if (/[0-9]+[AB][0-9]+/i.test(item.name)) {
                    let match = /[AB]/i.exec(item.name);
                    if (match != null && match.length == 1) {
                        components = (item.name.split(/[AB]/i));
                        components.splice(1, 0, match[0]);

                        aisle = parseInt(components[0]);
                        side = components[1];
                        bay = parseInt(components[2]);
                        aisles = [{ value: "Aisle " + parseInt(components[0]), label: "Aisle " + parseInt(components[0]), children: [{ value: "Side " + components[1], label: " Side" + components[1], children: [{ value: " Bay "  + parseInt(components[2]), label: " Bay" +   parseInt(components[2]) }] }] }]

                    }

                    this.setState(prevState=>{
                        return{
                            aisle: [...aisles, ...prevState.aisle]
                        }
                    })

                }

                else if (item.name.split(' ').length == 3 || item.name.split('-').length == 3) {
                    components = (item.name.split(/[ -]+/i));

                    aisle = components[0];
                    side = components[1];
                    bay = components[2];
                    aisles = [{ value: "AISLE " + parseInt(components[0]), label: "Aisle " + parseInt(components[0]), children: [{ value: " Side " + components[1], label: " Side " + components[1], children: [{ value: " Bay " + parseInt(components[2]), label: " Bay"+   parseInt(components[2]) }] }] }]

                }
            }
        }
        )

    }

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام