假设我有2个用户阵列。
[user3, user1, user2]
基于第二个数组,我想对第一个数组进行排序,以便第二个数组中的出现位于第一个数组中。
所以第一个数组的结果是:
return_array = []
array1.each do |a|
if array2.include? a
return_array.push array1.pop(a)
end
end
return_array.merge array1
我意识到,简单的方法是迭代第一个数组并填充一个空数组,如果第二个数组包含它,则对其进行排序,然后合并其余数组。以下是伪代码和未经测试的,但是我想到了一个简单的解决方案
window.onload = function() {
var startPos;
var geoOptions = {
maximumAge: 5 * 60 * 1000,
timeout: 10 * 1000
}
var geoSuccess = function(position) {
startPos = position;
document.getElementById('startLat').innerHTML = startPos.coords.latitude;
document.getElementById('startLon').innerHTML = startPos.coords.longitude;
};
var geoError = function(position) {
console.log('Error occurred. Error code: ' + error.code);
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from location provider)
// 3: timed out
};
navigator.geolocation.getCurrentPosition(geoSuccess);
document.getElementById('location').innerHTML = geocodeLatLng;
var geocodeLatLng = function(startPos) {
var latlng = {lat: document.getElementById('startLat').innerHTML, lng: document.getElementById('startLon').innerHTML};
console.log(startPos);
function address(results, status) {
if (results[6]) {
return results[6].formatted_address;
} else {
console.log('No results found');
}
}
}
};
有没有办法改进这个?例如,内置轨道或红宝石方法。
答案 0 :(得分:3)
您应该使用数组交集和数组差异:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace HealthHabitat.Models
{
public class Item
{
public int ItemID { get; set; }
[Required, Display(Name = "Item Type")]
public string Type { get; set; }
[Required, Display(Name = "Item Name")]
public string Name { get; set; }
[Display(Name = "Item Quantity")]
public int Quantity { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-mm-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Expiry Date")]
public DateTime Expiry_Date { get; set; }
public int Consumption { get; set; }
public virtual ICollection<OrderItem> OrderItems { get; set; }
}
}
会给你你想要的东西。 交集手册:http://ruby-doc.org/core-2.2.0/Array.html#method-i-26 差异手册:http://ruby-doc.org/core-2.2.0/Array.html#method-i-2D
答案 1 :(得分:0)
你可以这样做:
array2 + (array1 - array2)
答案 2 :(得分:0)
my_array = ['user1', 'user2', 'user3']
my_array2 = ['user3']
my_array2 + (my_array.sort - my_array2)