相关疑难解决方法(0)

如何循环或枚举JavaScript对象?

我有一个像以下JavaScript对象:

var p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};
Run Code Online (Sandbox Code Playgroud)

现在我想通过所有回路p元素(p1,p2,p3...),并得到他们的键和值.我怎样才能做到这一点?

如有必要,我可以修改JavaScript对象.我的最终目标是遍历一些键值对,如果可能的话,我想避免使用eval.

javascript each loops

2704
推荐指数
38
解决办法
180万
查看次数

迭代对象属性

var obj = {
    name: "Simon",
    age: "20",
    clothing: {
        style: "simple",
        hipster: false
    }
}

for(var propt in obj){
    console.log(propt + ': ' + obj[propt]);
}
Run Code Online (Sandbox Code Playgroud)

变量如何propt表示对象的属性?它不是内置方法或属性.为什么它会出现在对象中的每个属性?

javascript loops object

1904
推荐指数
24
解决办法
122万
查看次数

获取对象的属性名称

我想知道在JavaScript中是否有任何方法可以循环遍历这样的对象.

for(var i in myObject) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是得到这样的每个属性的名称.

for(var i in myObject) {
    separateObj[myObject[i].name] = myObject[i];
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法在谷歌上找到类似的东西.他们说要用它们传递变量的名称,但这不是我想要实现的选项.

谢谢你尽你所能的帮助.

javascript properties object

170
推荐指数
6
解决办法
29万
查看次数

使用Prototype在javascript中迭代对象的每个属性?

有没有办法使用Prototype JavaScript框架迭代对象的每个属性?

情况就是这样:我在JSON中得到一个AJAX响应,如下所示:

{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
Run Code Online (Sandbox Code Playgroud)

如果我将json响应评估为变量response,我希望能够遍历response.barobj对象中的每个属性,以查看哪些索引为true,哪些为false.

原型有两种Object.keys(),Object.values()但奇怪似乎没有一个简单的Object.each()功能!当我迭代一个时,我可以获取Object.keys()和Object.values()的结果并交叉引用另一个,但这是一个黑客,我相信有一个正确的方法来做到这一点!

javascript prototypejs

89
推荐指数
2
解决办法
10万
查看次数

在Typescript中:是否有"编译时"方法来获取TypeScript接口中定义的所有属性名称?

我想创建一个通用的TypeScript类,用于渲染(作为HTML列表)实现特定TypeScript接口的对象数组.

例如

class GenericListRenderer<T> {
  items: T[];

 constructor(listItems: T[], className?: string){
      this.items = listItems;
      ...
    }

    private getPropertyNames(): string[]{

    // What is the best way to access all property names defined in
    // TypeScript interface 'T' that was used in this generic?
    ...   
    }

    render(){
      var propNames: string[] = this.getPropertyNames();
      // render list with each item containing set of all 
      // key(prop name)/value pairs defined by interface 'T'  
      ...

    }
}
Run Code Online (Sandbox Code Playgroud)

问:获取指定()TypeScript接口中定义的所有属性名称的"编译时"列表的最佳方法是什么?

与C++模板一样,我相信TypeScript可以在"编译时"解析这些泛型,当TypeScript类型信息(如提供给用于实例化特定对象的泛型的接口)随时可用时.

由于可能提供了所有必需的类型信息,我只是好奇是否有可用于访问此信息的TypeScript扩展/工具,以及对'vanilla'Javascript对象的过度运行时过滤 - 由于模糊的继承问题,这可能会有问题(例如,如果运行时,泛型,Javascript(obj.hasOwnProperty(prop))用于过滤属性,则可能会过滤掉所需的TypeScript继承的接口属性).

这种有用的属性内省潜力可以在"编译时"期间使用TypeScript的超类型元数据进行明确解析,而不是在所有这些类型信息被丢弃时尝试在翻译的Javascript中解析此信息.

如果存在标准(TypeScript)方法,我讨厌使用可能不完美的Javascript hack'重新发明轮子'.

真诚地:初学者TypeScript …

generics interface typescript

24
推荐指数
3
解决办法
1万
查看次数

在Javascript对象中打印所有属性

我正在遵循代码学院的教程,我发现这很困难.

作业如下:

使用for-in循环打印出nyc的所有属性.

var nyc = {
    fullName: "New York City",
    mayor: "Michael Bloomberg",
    population: 8000000,
    boroughs: 5
};

// write your for-in loop here
for (var  in nyc){
    console.log(population);
}
Run Code Online (Sandbox Code Playgroud)

javascript

17
推荐指数
2
解决办法
9万
查看次数

如何在不知道密钥的情况下访问javascript对象值

可能重复:
如何枚举javascript对象的属性?

如果我有这样的javascript对象:

data = {
    a : 2,
    b : 3
}
Run Code Online (Sandbox Code Playgroud)

但是a和b是任意的并且在运行时决定.有没有办法在不知道密钥的情况下浏览对象并访问所有属性?

javascript

15
推荐指数
1
解决办法
2万
查看次数

javascript中的导航器对象.如何确定所有属性

可能重复:
如何枚举javascript对象的属性?

美好的一天!

我想通过以下代码确定使用javascript导航器的所有属性:

<script type="text/javascript">
    for(var property in navigator){ 
        str="navigator."+ property;   //HAVING A PROBLEM HERE...
        document.write(property+ "&nbsp;&nbsp;<em>"+ 
        str+"</em><br />");
    } 
</script>
Run Code Online (Sandbox Code Playgroud)

但我的str变量的串联打印原样.我需要的是房产的实际价值.

例如.navigator.appCodeName应该打印mozilla而不是navigator.appCodeName本身.

先感谢您.

javascript

7
推荐指数
1
解决办法
5720
查看次数

在检查每个键,值对Javascript时,通过Hashtable迭代

可能重复:
如何枚举javascript对象的属性?

我试图通过哈希表进行迭代.但是我每次运行时都需要检查值.

我如何使用foreach表来执行此操作?在sudo代码中我想这样做:

var tHash = {
 name: n,
 date: d,
 labels: l,
}

foreach(value in tHash){
   if(tHash.name== somevalue){do something};
   if(tHash.label == somevalue) {do something};
Run Code Online (Sandbox Code Playgroud)

这基本上是我想做的,但不是真正确定如何开始.

编辑:这不只是一个哈希它是一个哈希数组...我应该提到,在开始我放置代码的方式是我用一个for循环加载哈希数组的方式.

javascript hash foreach

7
推荐指数
2
解决办法
2万
查看次数

Javascript:向数组中的所有对象添加方法

想象一下以下代码:

$.get( "ajax/getColorData.php", function( data ) {
  this.colorData = data;
});
Run Code Online (Sandbox Code Playgroud)

现在设想'数据'的价值是:

this.colorData = [
    {
        colorName: 'Red',
        colorIsInRainbow:true
    },
    {
        colorName: 'Orange',
        colorIsInRainbow: true
    },
    {
        colorName: 'Magenta',
        colorIsInRainbow: false
    }
];
Run Code Online (Sandbox Code Playgroud)

问题1

现在,在我下载数据之后,假设我想为数组中的每个条目添加一个方法"colorStartsWithR".我"想"而不是在数组的每个成员上定义它,我可以在原型上以某种方式定义这个方法.但是,我不确定我能做到这一点,因为这些对象不是由我创建的,而是由$ .get返回的,所以我不清楚我是否正在思考正确的方向.

问题2

更进一步,如果我想为数组的每个成员添加一个属性,具体如下:

    {
        colorName: 'Magenta',
        colorIsInRainbow: false,
        userClickedThisColor:ko.observable()
    }
Run Code Online (Sandbox Code Playgroud)

这样,我可以绑定(通过knockoutjs)列表并包含一个复选框.在这种情况下,我质疑原型是否会派上用场,因为每个成员都应该获得自己的ko.observable属性.一个快速的本能是做一些事情:

for (var i=0;i<this.colorData.length;i++)
{
 this.colorData[i].userClickedThisColor=ko.observable()
}
Run Code Online (Sandbox Code Playgroud)

并且工作正常,但想象一下,有多种方法可以检索颜色列表,或者用户可以创建新的颜色实例,并且我在上面做的自定义更复杂.我现在需要复制上面的"附加"逻辑.有更聪明的方法吗?

我把大部分时间花在强类型语言上,有时这些事情对我来说并不那么明显.谢谢你的任何建议......

-ben

javascript arrays function-prototypes function-constructor

6
推荐指数
1
解决办法
2436
查看次数