Javascript 为什么排序给我随机排序(剔除可观察数组)
我有一个包含数字的可观察数组。我想按价格按钮分类。这是我的viewmodel:Javascript 为什么排序给我随机排序(剔除可观察数组),javascript,arrays,sorting,knockout.js,Javascript,Arrays,Sorting,Knockout.js,我有一个包含数字的可观察数组。我想按价格按钮分类。这是我的viewmodel: var ViewModel = function(model) { self.Numbers = ko.observableArray(model); self.SortArray = function() { InstanceViewModel.Numbers.sort(function (left, right) { ret
var ViewModel = function(model) {
self.Numbers = ko.observableArray(model);
self.SortArray = function() {
InstanceViewModel.Numbers.sort(function (left, right) {
return left.id == right.id ? 0 : (left.id < right.id ? -1 : 1) })
}
}
var InstanceViewModel = new ViewModel([{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}]);
ko.applyBindings(InstanceViewModel);
var ViewModel=函数(模型){
self.number=ko.observearray(模型);
self.SortArray=函数(){
InstanceViewModel.Number.sort(函数(左、右){
返回left.id==right.id?0:(left.id
这是我的html:
<input type="button" value="Sort" data-bind="click: SortArrayNum">
<div data-bind="foreach: Numbers">
<h1 data-bind="text: id"></h1>
</div>
分类不当怎么可能?它还说:“UncaughtTypeError:无法读取未定义的“sort”属性”。我一段时间前就开始工作了,感觉很奇怪。我做错了什么,伙计们?通过正确的阅读方式
myObservableArray.sort(function (left, right) { return left.lastName == right.lastName ? 0 : (left.lastName < right.lastName ? -1 : 1) })
myObservableArray.sort(函数(左、右){return left.lastName==right.lastName?0:(left.lastName
因此,这不应该吗
self.SortArray = function () {
return self.Numbers.sort(function (left, right) { return left.id == right.id ? 0 : (left.id < right.id ? -1 : 1) })
}
self.SortArray=function(){
返回self.Numbers.sort(函数(左,右){return left.id==right.id?0:(left.id
而不是
self.SortArray = function() {
InstanceViewModel.Numbers.sort(function (left, right) {
return left.id == right.id ? 0 : (left.id < right.id ? -1 : 1) })
}
self.SortArray=function(){
InstanceViewModel.Number.sort(函数(左、右){
返回left.id==right.id?0:(left.id
var ViewModel=函数(模型){
self.number=ko.observearray(模型);
self.SortArray=函数(){
self.number.sort(函数(左、右){
返回left.id==right.id?0:(left.id
您会遇到异常,因为您的函数名为SortArray而不是SortArrayNum似乎很挑剔,但实际上很重要:您没有数字数组。您有一个对象数组,其属性“id”包含一个字符串(碰巧包含一个数值)。
<input type="button" value="Sort" data-bind="click: SortArray">
<div data-bind="foreach: Numbers">
<h1 data-bind="text: id"></h1>
</div>
var ViewModel = function(model) {
self.Numbers = ko.observableArray(model);
self.SortArray = function() {
self.Numbers.sort(function (left, right) {
return left.id == right.id ? 0 : (left.id < right.id ? -1 : 1) })
}
}
var InstanceViewModel = new ViewModel([{"id":"2"},{"id":"1"},{"id":"6"},{"id":"4"}]);
ko.applyBindings(InstanceViewModel);