Javascript 创建observable,并将其他observable作为单个映射返回

Javascript 创建observable,并将其他observable作为单个映射返回,javascript,knockout.js,observable,Javascript,Knockout.js,Observable,我有一个自己的绑定,用于在knockoutJS中进行的numeric输入,它只接受数字 为了制造大数字,我在NumberField中声明了各种数字实例,如: var NumberField = function () { var self = this; self.maskFormat = "0"; self.firstNumber = ko.observable(""); self.secondNumber = ko.observable(""); self.thirdNu

我有一个自己的绑定,用于在
knockoutJS
中进行的
numeric
输入,它只接受数字

为了制造大数字,我在
NumberField
中声明了各种数字实例,如:

var NumberField = function () {
  var self = this;
  self.maskFormat = "0";
  self.firstNumber = ko.observable("");
  self.secondNumber = ko.observable("");
  self.thirdNumber = ko.observable("");
};

在代码中,当我需要使用它时,我必须这样做:

let unwrapNumbers = this.numbers().cleanNumber().split("").map(function (item){
    return Number(item);
});

这是可行的,但是。。。我很确定有一条更简单、更直的路。。。。有什么建议吗?

我认为将计算结果分为两部分会有所帮助:

  • 按顺序获取要包含的数字
  • 基于有序值创建字符串
  • 通常,将一个计算单元拆分为多个纯计算单元是有意义的,这些纯计算单元有一个明确的数据处理职责

    var NumberField=函数(){
    var self=这个;
    self.firstNumber=ko.可观察(1);
    self.secondNumber=ko.可观察(2);
    self.thirdNumber=ko.可观察(3);
    self.orderedNumbers=ko.pureComputed(函数(){
    返回[self.firstNumber,
    self.secondNumber,
    self.thirdNumber].map(ko.unwrap);
    });
    self.cleanedNumber=ko.pureComputed(函数(){
    返回self.orderedNumbers().join(“”);
    });
    };
    var nf=新的NumberField();
    //如果您需要这些号码:
    log(nf.orderedNumbers());
    //如果你想要绳子
    console.log(nf.cleanedNumber())
    
    我认为将计算结果分为两部分会有所帮助:

  • 按顺序获取要包含的数字
  • 基于有序值创建字符串
  • 通常,将一个计算单元拆分为多个纯计算单元是有意义的,这些纯计算单元有一个明确的数据处理职责

    var NumberField=函数(){
    var self=这个;
    self.firstNumber=ko.可观察(1);
    self.secondNumber=ko.可观察(2);
    self.thirdNumber=ko.可观察(3);
    self.orderedNumbers=ko.pureComputed(函数(){
    返回[self.firstNumber,
    self.secondNumber,
    self.thirdNumber].map(ko.unwrap);
    });
    self.cleanedNumber=ko.pureComputed(函数(){
    返回self.orderedNumbers().join(“”);
    });
    };
    var nf=新的NumberField();
    //如果您需要这些号码:
    log(nf.orderedNumbers());
    //如果你想要绳子
    console.log(nf.cleanedNumber())
    
    .map(ko.unwrap)是我一直在寻找的<代码>:)
    .map(ko.unwrap)是我一直在寻找的<代码>:)
    this.cleanNumber = ko.pureComputed(function () {
        return this.firstNumber().toString() + this.secondNumber().toString() + this.thirdNumber().toString();
    }, this);
    
    let unwrapNumbers = this.numbers().cleanNumber().split("").map(function (item){
        return Number(item);
    });