Javascript 与数组元素的数据绑定

Javascript 与数组元素的数据绑定,javascript,arrays,object,Javascript,Arrays,Object,为什么这个符号不起作用 const result1 = _model['dataarray[0]']; \u model.dataarray存在,它是一个包含2个元素的数组 “console.log(_model.dataarray[0])可以正常工作因为您将整个内容包装为字符串,而这不是访问对象属性的正确方法。但是只有键应该是字符串。否则,解释器将查找名为dataarray[0]的键,该键不存在 正确的语法是 const result1 = _model['dataarray'][0];

为什么这个符号不起作用

const result1  = _model['dataarray[0]'];
\u model.dataarray
存在,它是一个包含2个元素的数组


“console.log(_model.dataarray[0])可以正常工作

因为您将整个内容包装为字符串,而这不是访问对象属性的正确方法。但是只有键应该是字符串。否则,解释器将查找名为
dataarray[0]
的键,该键不存在

正确的语法是

const result1  = _model['dataarray'][0];
好的
控制台.log(\u model.dataarray[0])
工作正常,因为
\u model.dataarray[0]
\u model['dataarray[0]]]
不同,后者不正确,不应该将数组索引包装在字符串中

使用以下语法:

const result1  = _model['dataarray'][0];
或类似于
控制台中的.log()

编辑:

要使函数能够从对象动态获取值,而该值是否为
,这怎么可能是您的代码:

getValue = function(_model, valueToFind){
    if(_model.hasOwnProperty(valueToFind)){
        return _model[valueToFind];
    }else if(valueToFind.indexOf("[")>0){
        let key  = valueToFind.substring(0, valueToFind.indexOf("["));
        let index = parseInt(valueToFind.charAt(parseInt(valueToFind.indexOf("["))+1));
        return _model[key][index];
    }else{
        console.log('Please input a valid key!!');
    }
}
演示:

getValue=function(\u model,valueToFind){
if(_model.hasOwnProperty(valueToFind)){
return_model[valueToFind];
}else if(valueToFind.indexOf(“[”)大于0){
让key=valueToFind.substring(0,valueToFind.indexOf(“[”));
让index=parseInt(valueToFind.substring(valueToFind.indexOf(“[”)+1,valueToFind.indexOf(“]));
控制台日志(索引);
返回(模型[键][索引];;
}否则{
log('请输入一个有效的密钥!!');
}
}
var_model={dataarray:[“test1”、“test2”]};
log(getValue(_model,“dataarray”);
log(getValue(_model,“dataarray[1]”);

console.log(getValue(_model,“property”);
如何使其更通用。_model['x']x可以是字符串或array@FlorenceIMHO,一种方法是你可以检查它的类型。@Florence它怎么可能是动态的?你能举例说明你的OP中的键怎么可能是动态的吗?@chsdk我想做一个像getValue这样的函数(_model,valueToFind){return_model[valueToFind]我称之为fontion getValue(dataModel,'dataArray[0]')=>返回dataModel的值。dataArray[0]或getValue(dataModel,'dataModel,'name')=>返回dataModel.name或getValue(dataModel,'dataArray[0].firstName]的值)重新运行dataModel的值。dataArray[0].firstName@Florence我用一个简单的解决方案更新了我的答案,但对于复杂的表达式,您应该对其进行改进。如果我使用您的方法作为递归来构建一个完整的方法。在操作结束时,我有buildField='dataArray'][0]['person']['firstname']。如何将其用于模型?我已经尝试过插入安装控制台.log(
resultat build)${{u model+
${buildField}});但这不起作用表达式
'dataArray'][0]['person']['firstname']
不正确,不是吗?
getValue = function(_model, valueToFind){
    if(_model.hasOwnProperty(valueToFind)){
        return _model[valueToFind];
    }else if(valueToFind.indexOf("[")>0){
        let key  = valueToFind.substring(0, valueToFind.indexOf("["));
        let index = parseInt(valueToFind.charAt(parseInt(valueToFind.indexOf("["))+1));
        return _model[key][index];
    }else{
        console.log('Please input a valid key!!');
    }
}