可能重复:
动态对象属性名称
我有一个功能,我需要根据用户输入的数据调用.
例如,我有:
models.cat
models.dog
Run Code Online (Sandbox Code Playgroud)
现在,我希望能够在models.[my_str]哪里打电话my_str = "snake".所以计算机会认为它正在尝试执行models.snake.有没有办法在javascript或更好的coffeescript中做到这一点?
我想从 JSON 中获取对象字段的值。我有一个动态变量let check_permission_key = 'ratingscalename';和一个 JSON
let overwrite_key = {
studentimage: 'student',
ratingscalename: 'rating-scale-name',
ratingscale: 'rating-scale-name',
capturesettingset: 'capture-setting-set',
capturesetting: 'capture-setting-set',
eventlog: 'event-log',
goalcategorie: 'goal-category',
userimage: 'user',
datasheetlink: 'datasheet',
datasheetgoal: 'datasheet',
};
let get_value = overwrite_key.check_permission_key;
Run Code Online (Sandbox Code Playgroud)
所以我正在像这样获取数据,但它不起作用,有人可以帮我解决这个问题吗?
我有一个在私有 npm 存储库上发布的项目。在 下node v14.16.0 (npm v6.14.11),命令npm publish运行良好,我的包发布在我的私有存储库中。
我将 npm 升级到 7 以支持对等依赖项安装。现在在 下node v15.12.0 (npm v7.6.3),命令npm publish失败
“路径”参数必须是字符串类型。收到未定义
任何的想法?
更新
npm 7.6.3 与节点 14 效果相同:
“路径”参数必须是字符串类型
更新 2
带标志的控制台输出 --verbose
npm 动词 cli [ npm 动词 cli
'.nvm/versions/node/v15.12.0/bin/node', npm 动词 cli
cafile 0ms 内完成 npm 计时 config:load:validate 0ms 内完成 npm 计时 config:load:setUserAgent 1ms 内完成 npm 计时 config:load:setEnvs 0ms 内完成 npm 计时 config:load 18ms 内完成 npm 动词 npm-session 83e5ee6d9b1b9659 npm:load 在 82 …
所以我通过AJAX抓取一个JSON,但需要重新配置它.部分原因是使用变量中包含的字符串作为嵌套对象的属性名称.
但Javascript不允许这样做.它将变量视为文字字符串,而不是读取值.
这是一个片段:
var pvm.exerciseList = [];
$.get('folder_get.php', function(data){
var theList = $.parseJSON(data);
$.each(theList, function(parentFolder, files) {
var fileList = [];
$.each(files, function(url, name) {
thisGuy.push({fileURL: url, fileName: name});
});
pvm.exerciseList.push({parentFolder: fileList});
});
});
Run Code Online (Sandbox Code Playgroud)
有没有办法解决?我需要提取"parentFolder"中包含的字符串.现在,JS只是从字面上解释它.
我有一个JavaScript对象.
var obj = { Id: "100", Name: "John", Address: {Id:1,Name:"Bangalore"} }
var dataToRetrieve= "Name";
function GetPropertyValue(object,dataToRetrieve){
return obj[dataToRetrieve]
}
var retval = GetPropertyValue(obj,dataToRetrieve)
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,如果我尝试获取"Address.Name"的属性值的值,
喜欢:var dataToRetrieve = "Address.Name";
它表明undefined.
注意:属性变量由用户从HTML设置并且可以根据用户要求(他想要的属性值)进行更改.
我想要实现的目标:
1)如果dataToRetrieve = "Name",它应该给我"John",
2)如果dataToRetrieve = "Id",它应该给我"100",
3)如果dataToRetrieve = "Address.Name",它应该给我"Bangalore",
4)如果dataToRetrieve = "Address.Id",它应该给我1
Plunkr在这里:PLUNKR
我想知道是否可以从vue的数据集中访问变量,但是只能通过另一个变量指定变量名。这就是我的意思:
我的一些变量/属性:
var siteAdminVue = new Vue({
el: "#siteAdmin",
data: {
tagtitle: "",
tagparent: "",
tagdesc: "",
badgestitle: "",
badgesdesc: "",
badgesprivilege: 0,
newstitle: "",
newsnotify: false,
newscontent: "",
}
Run Code Online (Sandbox Code Playgroud)
现在,我想在vue中的一种方法中设置其中一些属性:
var self = this;
var type = currentSection.toString().substr(4);
var selectElement = document.getElementById(currentSection + "select");
// name of vue property, for example newstitle
var titleElement = type + "title";
self.[titleElement]= selectElement.value;
Run Code Online (Sandbox Code Playgroud)
我不想使用switch语句来检查是否需要设置新闻标题,徽章标题等,因此我想我可以将名称存储在已经在vue中定义的变量中,然后进行设置。有没有办法做到这一点?
提前致谢
我已经知道如何使用动态密钥名称setState但是如何将值设置为具有动态密钥的状态?
例
function thing(key) {
let stuff = this.state.key;
//Do stuff
}
Run Code Online (Sandbox Code Playgroud) I have a function which acts as a sort of focal point before calling my api.
I want to reduce the bloat a little by simplifying my if statements.
Currently I have a list of statements. 2 of which are shown below
if (this.props.source === 1) {
api.updateData01(id, data).then(res => {
this.hideModal()
this.props.updateData01()
console.log('DATA UPDATED')
})
}
if (this.props.source === 2) {
api.updateData02(id, data).then(res => {
this.hideModal()
this.props.updateData02()
console.log('DATA UPDATED')
})
}
Run Code Online (Sandbox Code Playgroud)
我想通过调出if语句来简化它,而是动态地重命名这些函数。
遵循以下原则
if(this.props.source === 1){
//rename updateData to …Run Code Online (Sandbox Code Playgroud) 如何使用中文字符或数字作为对象的键,如下所示:
var obj = { ?: 'me', 20: 'you' };
console.log(obj.?); // me
console.log(obj[?]); // -> Reference Error: ? is not defined
console.log(obj[20]); // you
console.log(obj.20); // ->Syntax Error: Unexpected number
Run Code Online (Sandbox Code Playgroud) 我有一个对象:
let object1 = { a: 'one', b: 'two', c: 'three' };
Run Code Online (Sandbox Code Playgroud)
我正在尝试将object1.a设置为object2的键:
object2 = { key: 'something' };
Run Code Online (Sandbox Code Playgroud)
我试图把钥匙作为:
[object1].a
object1.a
object1[a]
Run Code Online (Sandbox Code Playgroud)
我记得我必须使用括号表示法,但无法弄清楚如何做到这一点?
我想这样做的原因是因为我要根据道具改变object1的值,所以我可以只根据收到的道具改变一个组件.
javascript ×9
jquery ×2
node.js ×2
reactjs ×2
variables ×2
arrays ×1
coffeescript ×1
dom-events ×1
npm ×1
npm-publish ×1
object ×1
string ×1
vue.js ×1