Javascript 如果我不知道数组键/索引,如何访问包含对象的数组?
我有一个数组,里面有对象。我需要处理这个问题,需要访问对象数据 以下是此阵列的示例:Javascript 如果我不知道数组键/索引,如何访问包含对象的数组?,javascript,Javascript,我有一个数组,里面有对象。我需要处理这个问题,需要访问对象数据 以下是此阵列的示例: var result <- (16)array […] 0:object {…}"myobjectname1": {…} style_name: "border-top-right-radius" style_unit: "px"
var result <-
(16)array […]
0:object {…}"myobjectname1": {…} style_name: "border-top-right-radius"
style_unit: "px"
style_value: "0"
1:object {…}"myobjectname2": {…} style_name: "border-bottom-right-radius"
style_unit: "px"
style_value: "0"
2:object { "myobjectname3": {…} }
3:object { "myobjectname4": {…} }
4:object { "myobjectname5": {…} }
...
要点:myobjectname_from_变量的值与res_stylename相同,它包含类似“border右上半径”的内容
在这里,我们必须考虑,如何在javascript中调用它。比如说
object.border-top-right-radius.style_value
不会返回未定义的“right”错误。…您可以使用数组中的所有对象构建一个对象。然后获取想要访问的对象的密钥
var数组=[
{foo:{id:1,名称:'foo'},
{bar:{id:2,名称:'bar'}},
{baz:{id:3,名称:'baz'}
],
object=object.assign(…数组);
log(object.foo.id);
console.log(对象)代码>
.as console wrapper{max height:100%!important;top:0;}
您最好迭代数组,然后调用每次迭代的索引。还有一个名为.forEach
的数组方法,它为您包装了这个
var yourArray = []; // contains the array of objects you mentioned
yourArray.forEach(object => {
const key = Object.keys(object)[0];
alert(object[key].style_name);
})
更新
您的主要问题是在键中使用连字符。如果您想索引这样的对象,那么需要将键作为字符串引用
const obj = {'border-top-right-radius':'style_value'};
const test = obj['border-top-right-radius'];
console.log(test); // this logs 'style_value '
const other = obj.border-top-right-radius;
// This will throw that 'right' is undefined.
如果您需要这种格式,那么将连字符更改为下划线。对于下划线,直接引用它们是没有问题的。您可以在以后轻松地重新映射到带连字符的字符串,以了解您正在使用执行的操作。替换
const underscoreReplacement = 'border_top_right_radius';
const actualSheetValue = underscoreReplacementreplace(/_/g, '-');
console.log(actualSheetValue); // logs 'border-top-right-radius'
我在一个each循环中创建我的数据,我如何也在一个each循环中创建这种数据?我用这种方法创建了一个带有字母数字索引/键的数组吗?对不起,也许这是个鸟的问题,你们会用“…数组”告诉麻省理工学院什么?只是ES6的一部分。实际上我不知道你是如何生成数组的。对于获取一个对象,您可以查看并将每个内部对象添加到一个新属性中。我已经用创建数组的方式更新了我的代码-您可以看一下吗?我看不出有什么大的区别?你需要数组吗?如果我错了,请纠正我,每次我从数组/对象调用所需的数据时,搜索都是一种非常缓慢的方式。将所有内容设置到对象中肯定会更快,但我认为,由于数据位于数组中,因此在对象中建立索引时会出现一些问题。例如,数组是否可能包含多个同名对象?如果两个对象的键为myobjectname1
,则仅显示最后一个对象的内容。否,在正常情况下,字母数字索引必须唯一。我正在寻找一种方法,有效地处理数据-在这里我必须创建它们,这是要检查的部分…在这种情况下,对象就是要走的路。如果您不能保证唯一性,或者您有多个类似类型的条目,那么这是一个安全的路径。即使将其作为对象来实现也是可行的,但是您正在基于其他一些键创建一个嵌套对象,例如计数器,或者其他一些使其难以处理的方法。如果您试图通过边框右上半径
进行索引,并且它抛出了一个关于“右”未定义的错误,那就是我们没有看到的东西。从我们到目前为止所看到的情况来看,对象是通过样式名进行索引的。这个特别的错误可能是在设置res\u stylevalue
时出现的,因为似乎没有任何东西可以明确地调整“right”属性。请注意我答案的更新。在键中使用连字符是造成问题的原因。
const underscoreReplacement = 'border_top_right_radius';
const actualSheetValue = underscoreReplacementreplace(/_/g, '-');
console.log(actualSheetValue); // logs 'border-top-right-radius'