xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

js for...of index error All In One

js for...of index error All In One

for...of & index


for (const [i, v] of ['a', 'b', 'c'].entries()) {
  console.log(i, v)
}

.entries()

OK, order (index, obj).entries() ✅

for (const [index, obj] of [{k: 'a'}, {k: 'b'}, {k: 'c'}].entries()) {
  console.log(index, obj);
}
// 0 {k: "a"}
// 1 {k: "b"}
// 2 {k: "c"}

Error, order (obj, index) ❌

for (const [obj, index] of [{k: 'a'}, {k: 'b'}, {k: 'c'}]) {
  console.log(obj, index);
}
// Uncaught TypeError: .for is not iterable

object array bug

error ❌

Uncaught TypeError: .for is not iterable

    const dataShaper = (rows = []) => {
        const result = [];
        const timestamp = Date.now();
        console.log('rows', rows);
        for (const [obj, i] of rows) {
        // for (const obj of rows) {
            // const {
            //     author_id,
            //     name,
            //     nickname,
            //     status,
            //     updated_at,
            // } = obj;
            console.log('obj', obj);
            result.push({
                ...obj,
                uid: timestamp + i,
            });
        }
        console.log('result', result);
        return result;
    };

OK ✅ .entries()

    const dataShaper = (rows = []) => {
        const result = [];
        const timestamp = Date.now();
        console.log('rows', rows);
        for (const [index, obj] of rows.entries()) {
            console.log('index = ', index);
            console.log('obj = ', obj);
            result.push({
                ...obj,
                uid: timestamp + index,
            });
        }
        console.log('result', result);
        return result;
    };

OK ✅ for

    const dataShaper = (rows = []) => {
        const result = [];
        const timestamp = Date.now();
        for (let i = 0; i < rows.length; i++) {
            const obj = rows[i];
            result.push({
                ...obj,
                uid: timestamp + i,
            });
        }
        return result;
    };

test

const rows = [
    {
        "key": "status",
        "title": " 启停状态",
        "sortable": false,
        "dataIndex": "status"
    },
    {
        "key": "name",
        "title": "姓名",
        "sortable": false,
        "dataIndex": "name"
    },
    {
        "key": "nickname",
        "title": "昵称",
        "sortable": false,
        "dataIndex": "nickname"
    },
    {
        "key": "updated_at",
        "title": "更新时间",
        "sortable": false,
        "dataIndex": "updated_at"
    }
];

    const dataShaper = (rows = []) => {
        const result = [];
        const timestamp = Date.now();
        // console.log('rows', rows);
        for (const [index, obj] of rows.entries()) {
            console.log('index = ', index);
            console.log('obj = ', obj);
            result.push({
                ...obj,
                rowUniqueId: timestamp + index,
            });
        }
        // console.log('result', result);
        return result;
    };

dataShaper(rows)

Array.prototype.entries()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/entries

refs

https://developer.cdn.mozilla.net/en-US/docs/Web/JavaScript/Reference/Statements/for...of

https://flaviocopes.com/how-to-get-index-in-for-of-loop/

http://www.webhek.com/javascript-loop-foreach-for-in-for-of



©xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2021-04-12 16:24  xgqfrms  阅读(185)  评论(2编辑  收藏  举报