我如何将数组的每个索引更改为小写,将内部数组更改为大写

时间:2018-01-15 08:00:24

标签: javascript arrays object

  

[{" abc":{" xyz":{                 " jpy":{}}}}]

2 个答案:

答案 0 :(得分:2)

你可以使用一个级别计数,只对小写键采用第一级,对大写键采用所有其他级别。



function change(object, level) {
    level = level + 1 || 0;
    if (!object) {
        return;
    }
    if (Array.isArray(object)) {
        object.forEach(function (o) { change(o, level); });
        return;
    }
    Object.keys(object).forEach(function (k) {
        var key = k[level === 1 ? 'toLowerCase' : 'toUpperCase']();
        change(object[k], level);
        if (key !== k) {
            object[key] = object[k];
            delete object[k];
        }
    });
}

var array = [{ "BITFLYER": { "BTC": { "jpy": {} }, "ETH": { "BTC": {} }, "bch": { "BTC": {} }, "future": { "BTCJPY19JAN2018": {}, "BTCJPY26JAN2018": {} } } }, { "BITSTAMP": { "BTC": { "JPY": {} }, "ETH": { "BTC": {} }, "bch": { "BTC": {} } } }];

change(array);
console.log(array);

.as-console-wrapper { max-height: 100% !important; top: 0; }




答案 1 :(得分:0)

这就像@NinaSholz的答案,但使用了一些稍微不同的技巧。首先,将整个数组转换为大写字符串,然后使用--user将第一级键转换为小写。

hasOwnProperty