gpt4 book ai didi

javascript - 从函数参数访问对象

转载 作者:行者123 更新时间:2023-11-27 23:24:33 25 4
gpt4 key购买 nike

我尝试自己做,但不知道是否可行

function smth(){
var temp = [];
for(var i = arguments.length -1; i > 2; i-=1){
var temp2 = [];
temp.push(arguments[i]);
temp2.push(temp);
temp = temp2;
console.log(temp);
}
// I need to get array in this form
var something = item['collections']['0']['name'];
}
smth('collection','0','name');

编辑:

好吧,也许我没有给你足够的信息。我有一个 JSON 对象,我正在制作一个过滤器函数,我想让它更加可重用,因为现在我已经硬编码了 item.collections[0].name ,有时我需要使用 item.parameters.name ,我会多用几次

$scope.$watch(name, function (newValue, oldValue) {
if (newValue !== oldValue) {
$scope.productsChucks = myFilter(array, function(item) {
//console.log(item['collections']['0']['name']);
if (item.collections[0].name == $scope[compareWith]) {
return item;
}
});
}
});

最佳答案

我认为你提出的问题完全错误,恕我直言,这是一个典型的 XY 问题 https://meta.stackexchange.com/a/66378

无论如何,根据您的编辑,我认为您真正想要的是使用 "item.parameters.name" 形式的字符串来获取对象的一些嵌套属性。

最简单的方法是使用某种辅助库,例如。洛达什:

_.get(item, 'parameters.name') // returns item.parameters.name
_.get(item, 'collections[0].name') // returns item.collections[0].name

使用它,您的代码将类似于以下内容:

// path is a string given as the parameter to the filter
if (_.get(item, path) === $scope[compareWith]) {
return item;
}

您的函数 smth 现在将只接受一个参数:

smth('collection[0].name');

有关 lodash 的更多信息可以在这里找到 https://lodash.com/docs#get

如果你认为你不需要整个lodash,你可以自己实现这个单一的功能,看看这里https://stackoverflow.com/a/6491621/704894

关于javascript - 从函数参数访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068051/

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