java读取到数组_使用Java数组读取数组?

如果a = [[1,[],“ f”,3],[3,[4,“ x”]]]]和b = [1,1].

我想像a [1] [1]一样读取a by b,以获得[4,“ x”].请注意,b是一个只能由整数组成的数组.

您也可以执行eval(‘a [‘b.join(‘],[‘)’]’),但需要实际的变量名作为字符串,这很丑陋.

这是我的一些功能:

Array.prototype.readByArray = function(a) {

var c = this;

for (var i = 0; i < a.length; i++) {

c = c[a[i]];

}

return c;

};

Array.prototype.emptyByArray = function(a) {

var c = this.readByArray(a);

c.splice(0, c.length);

};

Array.prototype.concateByArray = function(a, e) {

var c = this.readByArray(a);

for (var i = 0; i < e.length; i++) {

c.push(e[i]);

}

};

Array.prototype.setByArray = function(a, e) {

this.emptyByArray(a);

this.readByArray(a).push(e);

};

在此示例中,这对于以命令式读取嵌套数组很有用:

Array.prototype.readByArray=function(a){var c=this;for(var i=0;i

var a = [1,2,3,[1,2,3,[{x: 3},"test"],4],"foo","bar"]; //Your array

var b = [0]; //Reading stack

var s = '[\n'; //Output

while(b[0]

if(Array.isArray(a.readByArray(b))){

s+=' '.repeat(b.length)+'[\n';

b.push(-1);

}else{

s+=' '.repeat(b.length)+JSON.stringify(a.readByArray(b))+'\n';

}

b[b.length-1]++;

while(b[b.length-1]>=a.readByArray(b.slice(0,-1)).length){

b.pop();

b[b.length-1]++;

s+=' '.repeat(b.length)+']\n';

}

}

console.log(s);

有什么更好的方法吗?是否有本机功能?

解决方法:

从整个数组开始,并为b的每个元素返回数组的一部分,直到使用所有索引为止.

var a = [[1, [], "f", 3], [3, [4, "x"]]],

b = [1, 1],

result = b.reduce(function (v, i) {

return v[i];

}, a);

console.log(result);

ES6

var a = [[1, [], "f", 3], [3, [4, "x"]]],

b = [1, 1],

result = b.reduce((v, i) => v[i], a);

console.log(result);

result[0] = 42;

console.log(a);

result.splice(0, result.length, 'test');

console.log(a);

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

标签:arrays,javascript

来源: https://codeday.me/bug/20191118/2026893.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值