gpt4 book ai didi

javascript - 子阵选择

转载 作者:行者123 更新时间:2023-11-30 14:43:57 24 4
gpt4 key购买 nike

我想在 javascript 中完成(只是为了好玩)一个类似于 python 的子数组选择。像这样的东西:

let a = ["a","b","c","d"]
console.log(a[[0,2]])
//prints ["a","c"]

一种(有点冗长的)方法可能是使用代理:

var handler = {
get: function(target, name) {
console.log("type of name", typeof(name)) //it prints "string"!
if (name in target) {
return target[name];
}
if (name == 'length') {
return Infinity;
}
if (Array.isArray(name)) {
return target.filter((v, i) => ~name.indexOf(i))
}
},
set: function(target, property, value, receiver) {
target[property] = value;
return true;
}
};

var originalArray = ["a", "b", "c", "d"];
var p = new Proxy(originalArray, handler);

console.log(p[[1, 2, 4]]);

如果我将数组传递给 get 函数,它将自动转换为字符串!为什么要这样做?

有没有一种方法可以构建一个结构,其中的元素可以通过这种用法进行选择?a[[0,2]]

最佳答案

您可以查找逗号,因为属性是字符串,并且您可以从数组中获取一个连接字符串作为键。

var handler = {
get: function(target, name) {
if (name.includes(',')) {
return name.split(',').map(i => target[i]);
}
return target[name];
},
set: function(target, property, value, receiver) {
target[property] = value;
return true;
}
};

var originalArray = ["a","b","c","d"];
var p = new Proxy( originalArray, handler );

console.log(p[[1,2,4]]); // ["b", "c", undefined]
console.log(p['length']); // 4

关于javascript - 子阵选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49239133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com