S16*_*S16 17 javascript arrays sorting json underscore.js
让我们说我从这开始:
var shippingAddresses = [{
"firstname": "Kevin",
"lastname": "Borders",
"address1": "2201 N Pershing Dr",
"address2": "Apt 417",
"city": "Arlington",
"state": "VA",
"zip": "22201",
"country": "US"
}, {
"firstname": "Dan",
"lastname": "Hess",
"address1": "304 Riversedge Dr",
"address2": "",
"city": "Saline",
"state": "MI",
"zip": "48176",
"country": "US"
}];
Run Code Online (Sandbox Code Playgroud)
我使用它来预填充表格.用户可以编辑条目或添加新条目.我需要阻止他们添加重复项.
问题是我正在序列化的表单的结构以及从数据库返回这些值的顺序是不一样的,所以我有可能使用以下格式将项插入到此数组中:
{
"country": "US",
"firstname": "Kevin",
"lastname": "Borders",
"address1": "2201 N Pershing Dr",
"address2": "Apt 417",
"zip": "22201",
"city": "Arlington",
"state": "VA"
}
Run Code Online (Sandbox Code Playgroud)
这与第一个条目相同,只是以不同方式排序.
我正在加载underscorejs,所以如果有办法用那个库来处理它会很棒.我也在使用jQuery,如果有帮助的话.
在这一点上,我不知道如何继续.
Ber*_*rgi 28
该下划线findWhere功能不正是你所需要的-这不是一个indexOf按对象身份搜索,但搜索的对象,其属性具有与输入相同的值.
if (_.findWhere(shippingAddresses, toBeInserted) == null) {
shippingAddresses.push(toBeInserted);
}
Run Code Online (Sandbox Code Playgroud)
vsy*_*ync 15
var a = [1,2,3];
// try to add "1" and "4" to the above Array
a = _.union(a, [1, 4]);
console.log(a);Run Code Online (Sandbox Code Playgroud)
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>Run Code Online (Sandbox Code Playgroud)
虽然这并没有直接回答这个问题,但它确实回答了如何为数组添加唯一值的更广泛的问题,而像我一样,其他人可能会从谷歌这个页面上绊倒.
基于这个答案:“js-remove-an-array-element-by-index-in-javascript”
我使用以下简洁的习惯用法,不需要 underscore.js 或任何其他框架。
下面是一个为 DataTables jquery 插件记录选定和取消选定行的示例。我保留当前选定 id 的数组,并且我不想在数组中出现重复项:
在咖啡脚本中
fnRowSelected: (nodes) ->
position = $selected.indexOf(nodes[0].id)
unless ~position
$selected.push nodes[0].id
return
fnRowDeselected: (nodes) ->
position = $selected.indexOf(nodes[0].id)
if ~position
$selected.splice(position, 1)
Run Code Online (Sandbox Code Playgroud)
更一般地说,它会
position = myArray.indexOf(myval)
unless ~position
myArray.push myVal
Run Code Online (Sandbox Code Playgroud)
或者在JS中
var position;
position = myArray.indexOf(myval);
if (!~position) {
myArray.push(myVal);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41220 次 |
| 最近记录: |