相关疑难解决方法(0)

以点表示法计算字符串以从视图中的对象获取相应的值

真的希望有人可以帮助我解决我最近遇到过的问题.

假设我在AngularJS中有两个对象.

$scope.fields = ['info.name', 'info.category', 'rate.health']

$scope.rows = [{
    info: { name: "Apple", category: "Fruit"},
    rate: { health: 100, ignored: true}
},{
    info: { name: "Orange", category: "Fruit"},
    rate: { health: 100, ignored: true}
},{
    info: { name: "Snickers", category: "Sweet"},
    rate: { health: 0, ignored: true}
}]
Run Code Online (Sandbox Code Playgroud)

然后我想在视图中显示一个表格,只显示该字段中的字段$scope.fields.如果桌子是平的,这将是非常容易的,我知道我可以使用JavaScript来展平它,但必须有一种方法可以通过将点符号转换为路径来实现.

我添加了一个JSFiddle来演示我遇到的问题:

JSFiddle:http://jsfiddle.net/7dyqw4ve/1/

我也尝试过如下所示的做法,但问题是在视图中使用函数的可怕做法: 将点符号中的JavaScript字符串转换为对象引用

如果有人有任何想法我会非常感激.

javascript angularjs

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

嵌套对象的计算解构

通过解构可以很方便地从Objects 中提取属性:

let o = {id: "100", name: "Jane Doe", address: {id:1, city:"Fargo"}},
 key = "address";

let {address: {id: id}} = o; // 1
Run Code Online (Sandbox Code Playgroud)

解构模式也可以计算:

let {[key]: {city: city}} = o; // Fargo
Run Code Online (Sandbox Code Playgroud)

但显然不可能动态提取嵌套对象的属性:

key = "address.city";
({[key]: city} = o); // undefined
Run Code Online (Sandbox Code Playgroud)

是否可以Object使用计算模式解构嵌套的 s?

javascript nested object destructuring ecmascript-6

5
推荐指数
1
解决办法
1457
查看次数

Angular2 - 将ngModel绑定到属性的引用

我有一长串用户输入,并希望将它们存储在一个对象中,而不是用HTML拼写出来.我想将这些值绑定到另一个存储用户/客户数据的对象.由于其简单性和功能性,优选使用ngModel.

谁知道我怎么能做到这一点?

以下示例(不工作).

@Component({
  template: `
    <div>
      <h2>NgModel Example</h2>
      <div *ngFor="let input of inputList">
        {{ input.label }} <input type="text" [(ngModel)]="input.bindTo">
      </div>
    </div>

    <p>This is not working: {{customerInfo.name}}, {{customerInfo.email}}</p>
  `,
  directives: [...]
})

export class AppComponent {
  inputList = [
    {
      label: "Enter your name",
      bindTo: this.customerInfo.name  // also tried 'customerInfo.name'
    },
    {
      label: "Enter your email",
      bindTo: this.customerInfo.email
    }
  ]  

  customerInfo = {
    name: 'test',
    email: ''
  }
}
Run Code Online (Sandbox Code Playgroud)

angular2-template angular

5
推荐指数
1
解决办法
9911
查看次数

在javascript中对对象的对象数组进行排序

我想通过"user"对象中的"name"对下面的数组进行排序

 var myArr = [
 {"id":1,"user":{"name":"allen","id":101}},
 {"id":2,"user":{"name":"martin","id":102}}
]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我有一个方法来排序对象数组,但我不能将它用于对象的数组

这是方法:

function dynamicSort(property) {
    var sortOrder = 1;
    if (property[0] === "-") {
        sortOrder = -1;
        property = property.substr(1);
    }
    return function (a, b) {
            var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
        return result * sortOrder;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我可以使用这个排序:

myArr.sort(dynamicSort("id"));
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting javascript-objects

5
推荐指数
1
解决办法
132
查看次数

使用字符串作为对象引用

我目前有一个Javascript函数,它使用字符串来引用对象名称并访问其属性.我目前正在使用eval()来获得所需的效果,我知道这是非常非常错误的.这是我目前如何实现我想要的一个例子:

var stringToObjectRef = function() {

    var myTestVar = "myTestObject";
    var myTestObject = { 'item1' : 100, 'item2' : 12, 'item4' : 18 };

    var myValue = eval(myTestVar + '.item1');

    alert(myValue);

}();
Run Code Online (Sandbox Code Playgroud)

我尝试过使用像[myTestVar] .item1这样的东西,但这会返回undefined.实现此目的的正确语法是什么?

提前致谢.

javascript

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

具有模板文字类型的属性路径

通过添加模板文字类型,现在可以以类型安全的方式表达属性路径(点符号)。一些用户已经使用模板文字类型实现了一些东西或者提到了它

我想更进一步,并表达类型中空值/未定义/可选的可能性,例如foo.bar?.foobarfoo.boo.far?.farboo编译器应该可以接受,foo.bar.foobar而不适用于以下类型:

type Test = {
  foo: {
    bar?: {
      foobar: never;
      barfoo: string;
    };
    foo: symbol;
    boo: {
      far:
        | {
            farboo: number;
          }
        | undefined;
    };
  };
};
Run Code Online (Sandbox Code Playgroud)

到目前为止,可选参数被拾取(我不知道为什么,但它在我的 IDE 中使用相同的打字稿版本,请参见下面的屏幕截图)但不是明确标记的“远”属性作为未定义。这个游乐场展示了我的进步。不知何故,“未定义检查”没有按预期工作。

IDE 正确展开

typescript

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

如何在javascript中将对象键点符号转换为对象树

我有一个表单,我想将它发送到一个 ajax 端点,为此我有这个辅助方法:

    $.fn.serializeFormToObject = function() {
      //serialize to array
      var data = $(this).serializeArray();
      //add also disabled items
      $(':disabled[name]', this)
        .each(function() {
            data.push({ name: this.name, value: $(this).val() });
        });

      //map to object
      var obj = {};
      data.map(function(x) { obj[x.name] = x.value; });
      return obj;
    };
Run Code Online (Sandbox Code Playgroud)

问题是我的表单的某些名称中有点符号(使用 MVC 强类型模型)所以我有这个对象作为结果:

Task.Addresses.Box:""
Task.Addresses.City:"Limal"
Task.Addresses.Country:"Belgique"
Task.Deadline:"1/10/2017 12:18:18 PM"
Task.TaskSourceId:"1"
Run Code Online (Sandbox Code Playgroud)

预期的结果是:

{ Task : { Addresses: { Box: "", City: "Limal", Country: "Belgique"}, Deadline: "1/10/2017 12:18:18 PM", TaskSourceId:"1" } }
Run Code Online (Sandbox Code Playgroud)

我使用 lodash 库,但几个小时后我找不到实现此预期结果的方法。

有人可以为我提供一个有效的 javascript …

javascript jquery lodash

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

如何访问给定动态键的嵌套对象的属性?

我有一个不知道其结构的嵌套对象。例如:

const nestedObject = {
  "one": {
    "two": {
       "three": 3
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想显示的价值three

我有一个这样的数组,以便我知道如何导航对象以便到达three

const keys = ["one", "two", "three"]
Run Code Online (Sandbox Code Playgroud)

不必以这种方式构造。

那么,如何访问上面one.two.three给出的keys数组?或其他一些数据结构。我本来打算进行递归,但它似乎太复杂了,我觉得这里有一个简单的解决方案。

javascript

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

使用eval将字符串转换为函数是不是很邪恶?

我在eval()上听到了很多不同的意见,并且有点不确定在这种情况下是否可以使用eval():

假设我有一个这样的对象:

var bla = {
blubb: function (callback) {
       //GET some stuff via ajax
       //call the callback
    }
}
Run Code Online (Sandbox Code Playgroud)

和这样的字符串:

 var someString = "bla.blubb";
Run Code Online (Sandbox Code Playgroud)

为了调用函数(和回调函数)来评估字符串是不是很邪恶?

var callMe = eval(someString)
callMe(function(){
   alert('yay')!
});
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
700
查看次数

从一串嵌套键构建嵌套JSON

我有正在使用nodeJS读取的csv文件。我在阅读之前将每个文件转换为文本。

文件中的每一行都有以'='分隔的数据。

每行看起来像

data.location.degree.text=sometexthere
Run Code Online (Sandbox Code Playgroud)

“ =“之前的第一部分代表我的应用程序中json对象的索引。我的目的是解析此数据并为其构建json表示,以便上面的行成为

data:{
  location:{
    degree:{
      text: 'sometexthere'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

使用javascript / node js; 如何将应该表示嵌套JSON键序列的字符串转换为上述json对象?

javascript json node.js ecmascript-6

0
推荐指数
1
解决办法
1098
查看次数