Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果我不知道数组键/索引,如何访问包含对象的数组?_Javascript - Fatal编程技术网

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'